小编Sur*_*mar的帖子

在没有实体主体的情况下执行HTTP POST被认为是不好的做法吗?

我需要调用一个不需要用户输入的进程,只需要一个触发器.我计划在没有正文的情况下使用POST/uri来触发进程.我想知道从HTTP和REST角度来看这是否被认为是坏的?

rest post http

149
推荐指数
4
解决办法
6万
查看次数

REST媒体类型爆炸

在我尝试使用REST架构风格重新设计现有应用程序时,我遇到了一个问题,我想将其称为"Mediatype Explosion".但是,我不确定这是否真的是REST的问题或固有的好处.要解释我的意思,请参考以下示例

我们的应用程序的一小部分看起来像:

收集-collections-的 - >集合-的-物品─>项

即顶级是集合的集合,这些集合中的每一个都是项目的集合.

此外,每个项目都有8个属性,可以单独读取和写入.尝试将上述层次结构公开为RESTful资源会让我看到以下媒体类型:

application/vnd.mycompany.collection-of-collections+xml
application/vnd.mycompany.collection-of-items+xml
application/vnd.mycompany.item+xml
Run Code Online (Sandbox Code Playgroud)

此外,由于每个项目具有8个可以单独读取和写入的属性,因此将产生另外8种媒体类型.例如,项目的"值"属性的一种这样的媒体类型将是:

application/vnd.mycompany.item_value+xml
Run Code Online (Sandbox Code Playgroud)

正如我之前提到的,这只是我们应用程序的一小部分,我希望有几个不同的集合和项目需要以这种方式公开.

我的问题是:

  1. 我是否因为拥有大量媒体类型而做错了什么?
  2. 避免媒体类型爆炸的替代设计方法是什么?

我也知道上面的设计是高度精细的,特别是暴露项目的各个属性,并为每个属性分别设置媒体类型.然而,使其粗糙意味着我将最终通过线路传输不必要的数据,而实际上客户端只需要读取或写入项目的单个属性.你会如何处理这样的设计问题?

rest

45
推荐指数
3
解决办法
1万
查看次数

是否允许HTTP POST请求发送回响应正文?

根据HTTP规范:

如果在源服务器上创建了资源,则响应应该是201(已创建)并包含描述请求状态的实体,并引用新资源和Location头(请参阅第14.30节).

这是否意味着POST请求应始终在Location标头中发送重定向URI而没有响应主体?

http

39
推荐指数
2
解决办法
5万
查看次数

如何设计RESTful集合资源?

我正在尝试设计一个"物品集合"资源.我需要支持以下操作:

  1. 创建集合
  2. 删除该集合
  3. 将单个项添加到集合中
  4. 将多个项添加到集合中
  5. 从集合中删除单个项目
  6. 从集合中删除多个项目

这就是我已经走了:

创建集合:

==>
POST /service
Host: www.myserver.com
Content-Type: application/xml
<collection name="items">
 <item href="item1"/>
 <item href="item2"/>
 <item href="item3"/>
</collection>

<==
201 Created
Location: http://myserver.com/service/items
Content-Type: application/xml
...
Run Code Online (Sandbox Code Playgroud)

删除集合:

==>
DELETE /service/items

<==
200 OK
Run Code Online (Sandbox Code Playgroud)

从集合中删除单个项目:

==>
DELETE /service/items/item1
<==
200 OK
Run Code Online (Sandbox Code Playgroud)

但是,我发现支持其他操作有点棘手,即我可以使用哪些方法:

  • 将单个或多个项添加到集合中.(根据HTTP 1.1 RFC, PUT似乎不在此处
  • 在一个事务中从集合中删除多个项目.(DELETE似乎也不在这里)

rest

36
推荐指数
1
解决办法
3万
查看次数

HTTP Keep Alive持续时间与TCP超时持续时间之间的关系

我试图了解TCP/IP和HTTP超时值之间的关系.这两个超时值是不同还是相同?大多数Web服务器允许用户通过某些配置设置HTTP Keep Alive超时值.Web服务器如何使用此值?这个值是否只是在底层的TCP/IP套接字上设置,即HTTP Keep Alive超时和TCP/IP保持活动超时相同?或者他们的待遇不同?

我的理解是(可能不正确):Web服务器使用底层TCP套接字上的默认超时(即无限期),无论配置的HTTP Keep Alive超时如何,都会创建一个计算器线程,该线程将指定的HTTP超时间隔倒计时.当Worker线程达到零时,它会关闭连接.

编辑: 我的问题是关于两个超时持续时间之间的关系或差异,即当HTTP保持活动超时持续时间和Web服务器使用的套接字(SO_TIMEOUT)上的超时不同时会发生什么?我是否应该担心这两个是否相同?

tcp http keep-alive

26
推荐指数
2
解决办法
3万
查看次数

连通性和HATEOAS

据说,在一个定义良好的RESTful系统中,客户端只需要知道根URI或几个众所周知的URI,客户端就应该通过这些初始URI发现所有其他链接.我确实理解这种方法的好处(解耦客户端),但对我来说,缺点是客户端需要在每次尝试访问时发现链接,即给定以下资源层次结构:

/collection1
collection1
  |-sub1
    |-sub1sub1
 |-sub1sub1sub1
         |-sub1sub1sub1sub1
    |-sub1sub2
  |-sub2
    |-sub2sub1
    |-sub2sub2
  |-sub3
    |-sub3sub1
    |-sub3sub2
Run Code Online (Sandbox Code Playgroud)

如果我们遵循" 客户端只需要知道根URI "的方法,那么客户端应该只知道上面的根URI即/ collection1,并且客户端应该通过超媒体链接发现其余的URI.我发现这很麻烦,因为每次客户端需要进行GET时,比如sub1sub1sub1sub1,如果客户端首先对/ collection1执行GET并在返回的表示中定义跟随链接,然后在子资源上执行几次GET以达到想要的资源?或者我对连通性的理解是完全错误的?

最好的问候,Suresh

rest hateoas

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

有没有办法检查SSL数字证书是否有效而无需在Web服务器上安装?

是否有任何工具或机制可以帮助验证CA颁发的SSL证书,然后再将其安装到目标Web服务器上?

ssl https ca digital-certificate

7
推荐指数
2
解决办法
2万
查看次数

如何在两个不同数据中心上托管的两个Azure存储(blob)之间进行同步

我们计划将纯天然网络应用程序部署到两个独立的数据中心(一个位于西欧,另一个位于东南亚),纯粹是出于性能原因.我们允许用户上传文件,这意味着我们需要保持两个数据中心的blob存储同步.我知道Azure提供了对同步结构化数据的支持,但似乎没有对blob同步的支持.我的问题是:

是否有一种服务可以在不同的数据中心之间提供blob同步?如果没有,我该如何实施呢?我在Web上看到很多样本在Azure blob存储和本地文件系统之间同步,反之亦然,但在数据中心之间没有.

azure azure-storage

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

Microsoft的MEF与Eclipse相比如何?

MEF(Managed Extensibility Framework)和Eclipse平台之间有什么共同点和不同点?我觉得MEF与Eclipse非常相似,添加了DI.

你的意见?

.net eclipse plugins extensibility frameworks

3
推荐指数
2
解决办法
1683
查看次数

Python函数中不同数量的返回值

从Python中的函数返回不同数量的返回值可以吗?如果是,调用方应如何处理返回值?例如

def func():
    if(condition_1):
        return 1,2
    if(condition_2):
        return 1
    if(condition_3):
        return 1,2,3,4
Run Code Online (Sandbox Code Playgroud)

注意: condition_1,condition_2和condition_3在函数func中是本地的,因此调用者不知道将返回多少值。

python

3
推荐指数
4
解决办法
3448
查看次数

读取文件的内容并写入控制台

我有一个程序从文件中读取内容并将其打印在屏幕上.但程序打印每隔一行,即跳过其他所有行.包InputOutput;

import java.io.*;

public class CharacterFileReaderAndFileWriter{

    private BufferedReader br = null;

    private PrintWriter pw = new PrintWriter(System.out, true);


    /* Read from file and print to console */
    public void readFromFile() throws IOException{

        try{
            br = new BufferedReader(new FileReader("E:\\Programming\\Class files\\practice\\src\\InputOutput\\test.txt"));
        }
        catch(FileNotFoundException ex){
            ex.printStackTrace();
        }

        String s = null;
        do{
            s = br.readLine();
            pw.println(s);
        }
        while((s = br.readLine())!=null);

        br.close();
    }

    /* Main method */
    public static void main(String[] args) throws IOException{

        CharacterFileReaderAndFileWriter cfr = new CharacterFileReaderAndFileWriter();

        cfr.readFromFile();
    }

}
Run Code Online (Sandbox Code Playgroud)

java

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