总是会遇到一些小朋友反复在问api的调用问题
每次做项目总有小朋友会在问我的api怎么访问不了,你帮我看看吧,所以这里记录下一些问题,方便以后查阅。支持单个参数,json类型,实体类型访问,这里主要针对post方法。
1、后端webapi写法
以下给了4个方式的api接口
[AllowAnonymous]
[HttpPost]
public XResult Create(UserInputDto userInputDto)
{
return new XResult { Success = true };
}
[AllowAnonymous]
[HttpPost]
public XResult Creates(JObject jsonData)
{
var c = jsonData.Value<string>("userName");
return new XResult { Success = true };
}
[AllowAnonymous]
[HttpPost]
public XResult Createw([FromBody]string userName)
{
return new XResult { Success = true };
}
[HttpGet]
public XResult GetData([FromHeader]GetOrderByParamDto dto)
{
return new XResult { Success = true };
}
2、前端restsharp调用
static string Create()
{
var dto = new UserInputDto
{
UserName = "1",
RealName = "2"
};
var client = new RestClient();
client.Timeout = -1;
var url = "https://localhost:44335/Basic/User/Create";
var token = "Bearer sdfjjoijiihhih";
client.AddDefaultHeader("Authorization", token);
var request = new RestRequest(new Uri(url), Method.POST);
request.AddJsonBody(dto);
IRestResponse response = client.Execute(request);
return response.Content;
}
static string Create2()
{
var client = new RestClient();
client.Timeout = -1;
var url = "https://localhost:44335/Basic/User/Creates";
var token = "Bearer sdfjjoijiihhih";
client.AddDefaultHeader("Authorization", token);
var request = new RestRequest(new Uri(url), Method.POST);
var data = new { userName = "1", realName = "2" };
request.AddJsonBody(data);
IRestResponse response = client.Execute(request);
return response.Content;
}
static string Create3()
{
var client = new RestClient();
client.Timeout = -1;
var url = "https://localhost:44335/Basic/User/Createw";
var token = "Bearer sdfjjoijiihhih";
client.AddDefaultHeader("Authorization", token);
var request = new RestRequest(new Uri(url), Method.POST);
request.AddParameter("application/json", "1", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
return response.Content;
}
//实体参数(前端拼接成字符串)方式访问webapi示例
static Task<XResult> GetByParam(GetOrderByParamDto dto)
{
var query = new StringBuilder("?");
var propertys = dto.GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
if (pi.CanRead)
{
if (query.Length > 1)
{
query.Append("&");
}
query.Append($@"{pi.Name}={pi.GetValue(dto)}");
}
}
//拼接字符串访问地址
var server = "https://localhost:44335/Test/GetData"+query.ToString();
var url = server;
var request = new RestRequest(new Uri(url), Method.GET);
request.AddHeader("Content-Type", "application/json");
var response = client.ExecuteAsync(request);
return response.GetXResultAsync();
}