当前位置: 首页 > 面试题库 >

如何将任意json对象发布到webapi

司徒钱青
2023-03-14
问题内容

我如何/可以将json对象传递给webapi控制器(POST),并且 没有 类可将其映射到,而是将其作为任意内容来处理?

因此,如果我像这样从客户那里传递消息:

        createRecord: function (model, data, callback, callbackParams) {
        var request = jQuery.ajax({
            type: "POST", // default = GET,
            url: '/api/' + model + '/',
            data: data,
            contentType: 'application/json',
            success: function (msg) {
                $('#results').text(msg);
                if (callback) // only fire a callback if it has been specified
                    callback(msg, callbackParams);
            },
            error: function (jqXHR, textStatus) {
                alert('Request failed: ' + textStatus);
            }
        });
    }

数据是这样的:

{ "_id" : ObjectId("5069f825cd4c1d590cddf206"), "firstName" : "John", "lastName" : "Smith", "city" : "Vancouver", "country" : "Canada" }

我的控制器将能够解析吗?下次数据可能与该签名不匹配(例如:

{ "_id" : ObjectId("5069f825cd4c1d56677xz6"), "company" : "Acme" }

在我的控制器中,我尝试过:

public HttpResponseMessage Post([FromBody]JObject value)

和:

public HttpResponseMessage Post([FromBody]string value)

和(因为这实际上是与mongo数据库一起使用):

public HttpResponseMessage Post([FromBody]BsonDocument value)

但是看起来对象映射器想要映射到字符串以外的其他东西…


问题答案:

您可以让您的post方法接受HttpRequestMessage来传递模型绑定逻辑,并且可以直接读取请求的内容:

    public HttpResponseMessage Post(HttpRequestMessage req)
    {
        var data = req.Content.ReadAsStringAsync().Result; // using .Result here for simplicity...
        ...

    }

顺便说一句,执行JObject的操作不起作用的原因是因为’ObjectId(“ …”)’被用作数据中“ _id”的值…



 类似资料:
  • 问题内容: 我试图弄清楚如何将对象从表单发布到Web api服务。在我的控制器中,我定义了一个想要向其添加输入值的模型。 在我的输入字段中,我将它们绑定起来,例如: 在提交表单时,将这两个字段传递给我的服务并提交给我的WebApi 我已经通过两种方式尝试了此提交: 并且也如下,不声明参数 在webAPI中,我为帖子设置了一个方法 ReportLabel(dto)的定义如下: 我遇到的问题是,当我从

  • 问题内容: 我正在使用Symfony 2开发一个项目,我已经建立了一个捆绑包来处理我的所有数据库服务,这些服务来回传递JSON数据。 我的问题/问题: 是否可以发布简单的JSON对象?目前,我通过给对象起一个名字来欺骗我的ajax调用的普通表单帖子,如果我不给它起一个名字,我似乎无法从Symfony请求对象中获取数据。 我希望能够使用一个服务包来处理来自AJAX调用或常规Symfony形式的数据。

  • 问题内容: 我正在使用JAX-RS的Jersey实现。我想将JSON对象发布到该服务,但收到错误代码415不支持的媒体类型。我想念什么? 这是我的代码: 这是Order对象: 这样的GET请求可以完美地工作,并以JSON格式返回订单: 但是,像这样的POST请求返回415: 问题答案: 答案非常简单。我必须在请求中添加标头,其值为。没有此标头,Jersey不知道如何处理请求正文(尽管有注释)!

  • 问题内容: 我创建了一个需要发布到jersey的json,这是由grizzly运行的具有REST网络服务的服务器获取需要输出的传入json对象。我正在尝试,但不确定如何正确实施。 我有一个在加载时运行此方法的html文件 问题答案: 要将json发送到服务器,首先必须创建json 这就是构造ajax请求以将json作为post var发送的方式。 json现在将在post var中。

  • 我正在尝试使用OAS v2定义一个API,它将返回一个有效负载以及一些元数据。 换句话说,对API的响应将是: 有效负载可以是任何内容,并且在不同的场景下会有所不同,唯一的限制是它将是有效的JSON格式。因此,现在,我想将其定义为一个JSON对象,而不定义字段级别的细节。 如何在OAS2/JSON模式中做到这一点? 提前谢谢。

  • 我正在做一个项目,我请求一个api发布一个项目的详细信息。下面是我试图使用HttpRequest插入body itemstr的代码 这是我的newItem类 我试图将itemStr作为一个主体发布到本地运行的restful API。我可以使用GET请求检索,但不能发布。