带有 Json 参数的 Rest API 获取请求
Posted
技术标签:
【中文标题】带有 Json 参数的 Rest API 获取请求【英文标题】:Rest API Get request with Json parameter 【发布时间】:2019-12-01 01:30:33 【问题描述】:我有一个任务,我需要使用 complex type 参数请求 web api GET 请求,我想我们无法执行 GET 请求之类的事情期望通过 URL 共享所有内容。
任何人都可以帮助我如何实现这一目标。通过 C# 使用带有 JSON 数据的 Web API GET 请求。
消费者控制台:
class Program
static void Main(string[] args)
try
// Need to pass this through GET Request
var employee = new Employee() EmployeeId = 1, EmployeeName = "Test", Designation = "Developer", Salary = 100 ;
var jsonParam = JsonConvert.SerializeObject(employee);
//
var request = (HttpWebRequest)WebRequest.Create("http://localhost:52237/Values/GetEmp");
var encoding = new UTF8Encoding();
var bytes = encoding.GetBytes(jsonParam);
request.Method = "GET";
request.ContentLength = bytes.Length;
request.ContentType = "application/json";
using (var writeStream = request.GetRequestStream())
writeStream.Write(bytes, 0, bytes.Length);
using (var response = (HttpWebResponse)request.GetResponse())
var responseValue = string.Empty;
if (response.StatusCode == HttpStatusCode.OK)
// grab the response
using (var responseStream = response.GetResponseStream())
if (responseStream != null)
using (var reader = new StreamReader(responseStream))
responseValue = reader.ReadToEnd();
catch (Exception ex)
Console.WriteLine(ex.Message);
public class Employee
public int EmployeeId get; set;
public string EmployeeName get; set;
public int Salary get; set;
public string Designation get; set;
网络 API:
public class ValuesController : ApiController
[HttpGet]
[Route("api/GetEmp")]
public Employee GetEmp([FromUri]Employee employee)
// Getting employee object from client
// Yet to implement
if (employee != null)
employee.Designation = "Engineer";
return employee;
public class Employee
public int EmployeeId get; set;
public string EmployeeName get; set;
public int Salary get; set;
public string Designation get; set;
提前致谢。
【问题讨论】:
这些链接可能对您有所帮助 ***.com/questions/29571284/… 和 ***.com/questions/50850318/… 添加您有问题的复杂类型或样本请求格式 @MdFaridUddinKiron 用我尝试过的代码更新了我的问题 附注 1:GET 参数中的复杂类型总是是个坏主意和架构错误。旁注 2:MS recomends 使用 HttpClient 而不是WebRequest
。
你想请求相同的格式还是我会定制它
【参考方案1】:
我认为在 HTTP 1.1 版本之后,您还可以在 GET 请求中发送正文中的数据。因此,您可以使用 [FromBody] 而不是 [FromUri]。
[HttpGet]
[Route("api/GetEmp")]
public Employee GetEmp([FromBody]Employee employee)
// Getting employee object from client
// Yet to implement
if (employee != null)
employee.Designation = "Engineer";
return employee;
【讨论】:
你能分享一下如何通过控制台应用程序使用这个以上是关于带有 Json 参数的 Rest API 获取请求的主要内容,如果未能解决你的问题,请参考以下文章
使用 alamofire 将带有 JSON 对象和查询参数的 POST 请求发送到 REST Web 服务
使用 PHP cURL 通过 REST API 获取 JSON
如何在 Spring REST 控制器中获取原始 JSON 正文?
Windows Mobile 中用于 REST API 的请求参数