Ajax 获取休息 API 的请求

Posted

技术标签:

【中文标题】Ajax 获取休息 API 的请求【英文标题】:Ajax Get Request to RestApi 【发布时间】:2021-05-07 03:38:01 【问题描述】:

我确定这个问题之前已经发布过很多次,并且我已经查看了所有相关主题。但是还是不行。

我们有 javascript 部分:

$.ajax(
    type: "GET",
    url: "https://localhost:44346/api/persons/",
    //dataType: "JSON",
    success: function (response) 
        callback("a");
    ,
    error: function (response) 
        callback("b");
    

);

还有 C# 部分:

[Route("persons")]
[HttpGet]
public ActionResult GetPersons()

    return new JsonResult(new  Success = true, Result = "abc" , 
    System.Web.Mvc.JsonRequestBehavior.AllowGet);

问题是 Jquery 总是有 result = "b" 的错误。 Api 中的断点被命中。我试过有无dataType: "JSON"。将参数发送到 Api 也可以,但返回结果不起作用。所有项目都是 .Net 5.0。

【问题讨论】:

获取响应的详细信息会很有帮助。尤其是状态代码和任何错误消息。 请也发布控制器标题 response.statusCode.toString() 给出: f u n c t i o n ( e ) v a r t ;我 f ( e ) 我 f ( h ) T 。 a l w a y s ( e [ T . s t a t u s ] ) ; e l s e f o r ( t i n e ) w [ t ] = [ w [ t ] , e [ t ] ] ; r e t u r n t h i s 控制器头:´[ApiController] [Route("api")] public class PersonController : ControllerBase ´ 【参考方案1】:

替换

 url: "https://localhost:44346/api/persons/",

  url: "https://localhost:44346/api/persons",

并从您的操作中删除 [HttpGet]。

[Route("~/api/persons")]
public ActionResult GetPersons()

    return new JsonResult(new  Success = true, Result = "abc" );

但如果 API CORS 配置不正确,您仍然会收到错误响应。 API(不是客户端)启动应该是这样的:

public void ConfigureServices(IServiceCollection services)
        
            services.AddCors(o => o.AddPolicy("AllowAnyOrigins", builder =>
            
                builder.AllowAnyOrigin()
                       .AllowAnyMethod()
                       .AllowAnyHeader();
            ));


            services.AddControllers()
            .AddNewtonsoftJson(options =>
            options.SerializerSettings.ContractResolver =
            new CamelCasePropertyNamesContractResolver());
        


public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        
            
            app.UseRouting();
            app.UseCors("AllowAnyOrigins");

            //app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            
                endpoints.MapControllers();
            );
        

【讨论】:

更改 Url 和/或 Route 后,断点不再在 Api 中命中。也删除 [HttpGet] 没有任何区别。 @ProgrammingParadise 对不起,我忘了你在调用 API。我做了一些改变。 我几乎不敢相信。但它现在可以在 6 小时点击 300 次后工作。感谢您拯救我的一天,非常感谢! 谢谢你太多了,只要你接受答案就足够了。

以上是关于Ajax 获取休息 API 的请求的主要内容,如果未能解决你的问题,请参考以下文章

Linkedin API 对个人资料的休息请求

Ajax 和 Places API 获取请求

扩展 IsAjaxRequest() 以包含获取 api 请求

Laravel AJAX 请求进入路由 api Vue 错误

jQuery封装的ajax方法发送jsonp请求ajax全局事件restful风格的api获取XML数据

用于休息 api 的 Python 删除请求(在 gae 上)