相关疑难解决方法(0)

如何在Django URLpatterns中调度请求方法?

很清楚如何创建一个从URL正则表达式调度的URLPattern:

(r'^books/$', books),
Run Code Online (Sandbox Code Playgroud)

这里的书可以根据要求的方法,还派遣:

def books(request):
    if request.method == 'POST':
        ...
    else:
        ...
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种惯用的方法在URLPattern中包含请求方法,将所有调度/路由信息保存在一个位置,例如:

(r'^books/$', GET, retrieve-book),
(r'^books/$', POST, update-books),
(r'^books/$', PUT, create-books),
Run Code Online (Sandbox Code Playgroud)

python django django-urls

14
推荐指数
1
解决办法
3702
查看次数

RESTful多对多可能吗?

如何为REST帖子表示复杂资源?

您好,目前我有一个应用程序,当用户点击"保存"时,它会遍历所有表单元素并创建一个管理:

  var = params = [{ 
   attributes1: form1.getValues(),
   attributes2: form2.getValues(),  
.. ..
}];
Run Code Online (Sandbox Code Playgroud)

然后我通过RPC POST将此批量对象发送到我的"实体"模型服务.我希望保留数据的这个实体非常复杂.总而言之,数据分布在大约30个表格中.为了帮助解释我的实际问题,"实体"是一个建筑物(如物理/房屋/公寓).

我想要的是能够将我的混乱变成RESTful API以保存属性.我遇到的问题是,保存跨越单个表的单个模型的详细信息很好.如何在模型具有的情况下构建数据对象以进行传输

  • 多对多的关系
  • 一对多关系
  • 一对一的关系

例如:

这是我在房产和样本数据上可能拥有的WATERED版本

propertyId: 1,
locationId: 231234,
propertyName: "Brentwood",
kitchenFeatures: [
             { featureId: 1, details: "Induction hob"},
             { featureId:23, details: "900W microwave"}
],
propertyThemes: [ 12,32,54,65 ]
Run Code Online (Sandbox Code Playgroud)

这实际上还有很多......但你可以得到一般的要点.kitchenFeatures将是一个多对多的例子,我有一个featuresTable具有如下所有的功能:

`featureId`, `feature`
1             "Oven Hob"  
23            "Microwave"
Run Code Online (Sandbox Code Playgroud)

和propertyThemes将是另一个多对多的例子.

我希望如何形成我的RESTful服务的"对象"?这甚至可能吗?

即.如果我想保存这个属性,我会发送给:

http://example.com/api/property/1

rest

11
推荐指数
1
解决办法
5574
查看次数

通过HTTP将数据从浏览器流式传输到服务器的方法

是否有类似XHR的浏览器API可用于通过HTTP将二进制文件流式传输到服务器?

我希望随着时间的推移制作HTTP PUT请求并以编程方式创建数据.我不想一次创建所有这些数据,因为它可能会在内存中出现.一些psueudo代码来说明我所得到的:

var dataGenerator = new DataGenerator(); // Generates 8KB UInt8Array every second
var streamToWriteTo;
http.put('/example', function (requestStream) {
  streamToWriteTo = requestStream;
});

dataGenerator.on('data', function (chunk) {
  if (!streamToWriteTo) {
    return;
  }
  streamToWriteTo.write(chunk);
});
Run Code Online (Sandbox Code Playgroud)

我现在有一个Web套接字解决方案,但更喜欢常规HTTP,以便更好地与一些现有的服务器端代码互操作.

编辑:我可以使用最前沿的浏览器API.我正在查看Fetch API,因为它支持请求体的ArrayBuffers,DataViews,Files等.如果我能以某种方式伪造其中一个对象,以便我可以使用动态数据的Fetch API,这对我有用.我尝试创建一个Proxy对象,看看是否有任何方法被调用,我可以修补.不幸的是,似乎浏览器(至少在Chrome中)正在使用本机代码而不是JS版本进行读取.但是,如果我错了,请纠正我.

javascript browser http xmlhttprequest

11
推荐指数
3
解决办法
5794
查看次数

REST API,每个资源有多个命令

我有一个关于REST API设计的问题.这是一个简单的(可能太简单)API:

GET /ecommerce/order/123

POST /ecommerce/order (create a new order)

PUT /ecommerce/order/123 (update an existing order)

DELETE /ecommerce/order/123 (cancel order)
Run Code Online (Sandbox Code Playgroud)

但是,如果我希望客户输入订单被取消的原因怎么办?我需要将发布数据发送到API,但这不适用于DELETE.为了迎合这一点,我必须将DELETE更改为PUT.然后我会发布两个不同的资源进行更新和取消.

另一种解决方案是更改API:

GET /ecommerce/order/123

POST /ecommerce/order/create (create a new order)

PUT /ecommerce/order/update/123 (update an existing order)

DELETE /ecommerce/order/cancel/123 (cancel order)
Run Code Online (Sandbox Code Playgroud)

我不确定哪个是最好的选择.

关于REST API如何处理单个资源的多个命令有一个更普遍的问题.

任何输入将不胜感激!我很快就会在练习中阅读REST,但这个问题正在扼杀我.

api rest http

10
推荐指数
1
解决办法
3946
查看次数

请求参数和PUT方法

我正在尝试通过PUT请求传递请求参数,在基于Grails的应用程序.

我正在使用以下客户端代码发出请求:

$.ajax({
    url: 'api/controllerName/anId',
    type: 'PUT',
    data: $('form').serialize()
})
Run Code Online (Sandbox Code Playgroud)

使用以下映射:

"/api/$controller/$id?" {
    action = [ GET: "read", POST: "create", PUT: "update", DELETE: "delete"]
}
Run Code Online (Sandbox Code Playgroud)

但我的控制器的动作收到空的参数列表,只有id值.我试着将内容添加到日志中并仅查看:

[id:anId, action:[GET:read, POST:create, PUT:update, DELETE:delete], controller:controllerName]
Run Code Online (Sandbox Code Playgroud)

request.getParameterNames()返回空的值列表.

正如我在FireBug中看到的那样,请求包含此参数,并将Content-Type设置为 application/x-www-form-urlencoded; charset=UTF-8

如果我正在使用GET/POST方法 - 一切都按预期工作,我可以获得所有传递的参数.

我怎样才能访问传递的参数?

更新:我刚认为PUT意味着将数据作为JSON/XML传递到正文中.顺便说一句,这个问题仍然是实际的,以防万一

java rest grails http

9
推荐指数
1
解决办法
7778
查看次数

我是否正确设计了此WCF RESTful接口?

我正在使用WcF身份验证服务创建WCF Web服务,我需要的第一组功能是管理客户端的收件箱.客户端将由身份验证确定.

这是我尝试REST的REST设计:


https://api.mydomain.com/v1/inbox/messages (GET)

使用可选的搜索过滤器返回收件箱中的结果页面

  • 计数 - 每页的记录数
  • 页面 - 开始的页面
  • 排序 - (可选)字段进行排序
  • 搜索 - (可选)要搜索的文本

https://api.mydomain.com/v1/inbox/mark (POST)

标记一条或多条已读或未读的邮件

  • 动作 - MarkRead或MarkUnread
  • MessageIDs - 要标记的消息ID列表

https://api.mydomain.com/v1/inbox/archive (POST)

归档一条或多条消息

  • MessageIDs - 要归档的消息ID列表

我这样做了吗?如果没有,那么设计这个界面会有什么更好的方法呢?

api rest wcf restful-authentication

9
推荐指数
1
解决办法
579
查看次数

PHP文件上传.POST与PUT?

我正在建立一个网站,人们可以上传文件大小限制为1GB的视频.Firefox> 3.6和Chrome> 11是我打算支持的唯一浏览器.对于大文件,使用PUT方法对POST方法进行文件上传是否有任何优点/缺点.不同的http方法如何影响网站的性能?

php performance file-upload http

8
推荐指数
1
解决办法
3574
查看次数

REST - PUT请求如何处理自动递增的资源标识符

根据HTTP 1.1.规格:

如果Request-URI未指向现有资源,并且该URI能够被请求用户代理定义为新资源,则源服务器可以使用该URI创建资源.

换句话说,PUT可用于创建和更新.更具体地说,如果我做一个PUT请求,例如

PUT /users/1
Run Code Online (Sandbox Code Playgroud)

并且该用户不存在,我希望此请求的结果是创建具有此ID的用户.但是,如果您的后端使用自动增量键,这将如何工作?如果它不可行(例如自动增量为6并且我请求10)并且如果可能(例如请求7)创建,那么它是否会简单地忽略它?

从我上面提到的片段看来它似乎给你这种灵活性,只是寻找一些澄清.

rest put auto-increment

8
推荐指数
1
解决办法
2412
查看次数

在正文或 URI 中指定 REST API PUT 请求的 DTO ID?

对于 REST 和 ASP.NET Web API,即使 DTO 负载(例如 JSON)本身指定了标识符,是否也需要将标识符添加到 PUT 操作方法的路由中?

例如:

public void Put(int id, [FromBody]SomeDto someDto) // someDto has an 'Id' property
Run Code Online (Sandbox Code Playgroud)

ASP.NET Web API 模板包含该id参数,我见过很多这样的例子。

相比之下,是否可以省略该id参数并仍然遵守 REST 准则?例如:

public void Put([FromBody]SomeDto someDto)
Run Code Online (Sandbox Code Playgroud)

rest put http-verbs asp.net-web-api

8
推荐指数
1
解决办法
2179
查看次数

RESTful数据结构模式

我尝试谷歌搜索和搜索到处,但无法找到关于这个主题的最终权威.虽然忠于REST原则,但我应该如何设计HTTP接口:

  1. 有序列表(获取,添加,插入位置,重新排序,删除)

  2. 一套(获取,添加,删除)

  3. 哈希表(获取,添加,删除)

注意:这些数据结构包含对已知ID的现有资源的引用

rest design-patterns http data-structures

7
推荐指数
1
解决办法
1655
查看次数