如何使用 http 请求从 WebAPI 返回 JSON?

Posted

技术标签:

【中文标题】如何使用 http 请求从 WebAPI 返回 JSON?【英文标题】:How to return a JSON from WebAPI using http request? 【发布时间】:2021-08-31 07:12:21 【问题描述】:

我正在尝试实现一个新的 Web API。此 API 从 HTTP 请求返回 JSON。 到目前为止,我编写了非常基本的代码,但奇怪的是我在使用 XML 模板时遇到了一个错误——我不知道该怎么做: 这是调用:http://localhost:55643/api/ShipmentsStatus/getShipmentsStatusJSON

代码在这里:

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;

namespace RunCom.WebAPI.Controllers

[Route("api/[controller]")]
public class ShipmentsStatusController : ApiController

    // /api/ShipmentsStatus/getShipmentsStatusJSON

    public ShipmentsStatusController()
    
        int i = 0;
    

    [HttpGet]
    [Route("getShipmentsStatusJSON")]
    
    public IEnumerable<String> Get()
    
        test check = new test("1");
        yield return JsonConvert.SerializeObject(check);
    



    internal class test
    
        string key;
        public test(string k)
        
            key = k;
        
    

我得到的错误在这里:

<Error>
<Message>No HTTP resource was found that matches the request URI 
'http://localhost:55643/api/ShipmentsStatus/getShipmentsJSON'.</Message>
<MessageDetail>No action was found on the controller 'ShipmentsStatus' that matches the request.</MessageDetail>
</Error>

我的代码有什么问题?

【问题讨论】:

看起来您正在调用“getShipmentsJSON”,但代码是“getShipmentsStatusJSON”。 localhost:55643/api/ShipmentsStatus/getShipmentsStatusJSON --> 还是不行 这个问题应该包含更多细节并澄清问题。 【参考方案1】:

尝试修复路线


    [Route("~/api/ShipmentsStatus/GetShipmentsStatusJSON")]
     public IEnumerable<string> Get()
    
        return new List<string> "1","2","3";
    

【讨论】:

我得到运行时错误 var serializer = new XmlSerializer(type); 请现在再试一次 工作。我的解决方案不正确【参考方案2】:

您应该使用http://localhost:55643/api/ShipmentsStatus/getShipmentsStatusJSON 或将[Route("getShipmentsStatusJSON")] 更改为适当的API 方法名称

【讨论】:

还没有工作

以上是关于如何使用 http 请求从 WebAPI 返回 JSON?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 WebApi 操作返回 html 页面?

WebApi Post 方法总是返回“请求的资源不支持 http 方法 'GET'。”状态:405 方法不允许

如何验证请求标头、JWT 令牌

将正确的标头值发送到从角度 $http 到 asp.net webapi 的 Preflight 请求时出错

WebAPI返回数据类型解惑

WebApi 2 超出最大请求长度