标签: restful-architecture

Java - 在pom.xml中添加jar依赖项

我从未用maven构建我的java应用程序.但是,当我试图这样做时,它给了我错误.我只是通过从该应用程序导出为JAR,从其他Java应用程序创建了JAR文件.现在我想在我的maven应用程序中添加这个JAR.我真的不怎么做.

这是我在pom.xml中添加的方式.但我真的不知道应该是什么神器ID.严重的是什么是神器ID?

<dependency>
        <groupId>ProjectZen</groupId>
        <artifactId>community</artifactId>
        <scope>system</scope>
        <version>1</version>
        <systemPath>${basedir}\libs\ProjectZen.jar</systemPath>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

我收到了以下错误

Missing artifact ProjectZen:community:jar:1
Run Code Online (Sandbox Code Playgroud)

谢谢Fahad Mullaji

java jar maven restful-architecture

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

为POST Web API使用可选的复杂类型操作参数

我正在尝试使用以下原型编写API:

[HttpPost]
public ApplicationStatus appLogIn(string id, UserCredentials userCredentials = null)
Run Code Online (Sandbox Code Playgroud)

但是当我向这个API提出请求时,无论有没有userCredentials,我都会得到以下错误,响应代码为500

{
  "Message": "An error has occurred.",
  "ExceptionMessage": "Optional parameter 'userCredentials' is not supported by 'FormatterParameterBinding'.",
  "ExceptionType": "System.InvalidOperationException",
  "StackTrace": null
}
Run Code Online (Sandbox Code Playgroud)

如果我不将userCredentials作为可选项,一切正常.userCredential定义如下:

public class UserCredentials
{
    public string password { get; set; }
    public string username { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

asp.net http-post restful-architecture asp.net-web-api

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

DDOS攻击 - 宁静的Web服务

您能否列出一些策略甚至已经应用的方法来预防/保护/最小化对Restful Web Services的DDOS攻击?

谢谢.

security rest ddos restful-architecture

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

服务器端MVC框架是否仍然与单页面应用程序相关?

在使用Angular的单页应用程序中,似乎大多数事情都是在客户端处理的.客户端似乎只是对服务器进行了休息调用.

遵循这个概念,在我看来,我的服务器端根本没有任何应用程序,只有生成RESTful json数据供客户端读取的脚本.

也许像Hibernate这样的框架或连接到数据库的框架仍然是相关的,因为服务器上的restful脚本仍然需要连接到DB.但那些MVC框架呢?

由于在单页的应用程序服务器只需要以服务客户端REST风格的调用,框架,如Spring,Struts的(在Java中)或Laravel(在PHP)等,它们都是不相关的SPA?这意味着服务器端可能只需要一个好的RESTful库,我们可以使用它来提供json数据,这就是全部?否则,SPA中服务器上的视图和控制器会是什么?

javascript restful-architecture angularjs single-page-application

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

REST中数据的树结构 - URL总是来自root?

问题

当数据具有父/子/孙子实体的树结构时,我们经常复制URL中的信息,指定父ID,即使这不是必需的.在这种情况下设计RESTful API的最佳方法是什么?可以缩短URL并省略父ID吗?


树如下:最顶层的实体是产品.每个产品都有0-N评论.每篇评论都附有0-M评论.从理论上讲,这棵树可以有任意深度.

天真的RESTful API看起来像这样(假设只有GET端点):

/products ... list of products
/products/123 ... specific product 123
/products/123/reviews ... list of reviews for product '123'
/products/123/reviews/abc ... specific review 'abc'
/products/123/reviews/abc/comments ... list comments for review 'abc'
Run Code Online (Sandbox Code Playgroud)

坚持下去,等一下......我写的最后两个标签对产品'123'没有任何说明.是的,评论'abc'属于该产品,但作为一个人,我不需要知道.如果评论ID"abc"在所有评论中都是唯一的,那么计算机也不是.

因此,例如当我们发送更新(PATCH)审核'abc'的请求时,我们不需要知道父对象的整个层次结构直到树根(产品),例如它属于产品'123'在此案件.当然,我们假设每个对象在该实体的所有对象中都有一个唯一的ID - 但这是一种自然行为,例如在RDB中,所以很多人(好吧,他们的API)都处于这种情况.


问题

  1. 如果"子实体"的ID在该类型的所有实体中都是唯一的,那么最佳做法是设计这样的API吗?

    /reviews/abc ... specific review 'abc'
    /reviews/abc/comments ... list comments for review 'abc'
    /comments/xyz ... specific comment 'xyz'
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果对(1)的回答是肯定的,那么像这样的端点是否也应该有效?为什么?为什么不?

    /products/123/reviews/abc/comments/xyz ... specific comment 'xyz'
    
    Run Code Online (Sandbox Code Playgroud)
  3. 如果允许短URL(甚至是首选),那么这有点不一致吗?

    /products/123/reviews ... list reviews for product '123'
    /reviews/abc ... specific review …
    Run Code Online (Sandbox Code Playgroud)

api rest tree restful-url restful-architecture

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

HTTP POST响应创建多个资源时的位置标头

HTTP/1.1标准规定,如果一个POST在创建一个资源的操作结果,那么该响应应该包括一个Location与新的资源的地址头部.

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

在第14.30节,

对于201(已创建)响应,Location是请求创建的新资源的位置.

现在假设我的API允许POST通过将数组批量创建资源到集合资源URL.例如:

POST /books
[
    {
        "name": "The Colour of Magic",
        "published": "1983"
    },
    {
        "name": "The Light Fantastic",
        "published": "1986"
    }
]
Run Code Online (Sandbox Code Playgroud)

由于\book\{bookId}已经创建了两个资源,Location在这种情况下标题的值应该是多少?

Http在多个新资源创建后发布的问题是类似的,但它询问响应实体,而不是标题(并且没有答复).

rest http http-status-codes restful-url restful-architecture

9
推荐指数
2
解决办法
8310
查看次数

为一对多关系公开RESTful端点

考虑两个资源之间的以下关系

  • 学院有很多院系
  • 学院属于学院

显然,一个学院不是一流的资源.

现在我需要端点来执行以下操作.

  • 在这所大学这个农场建立一个新的教师队伍.在两个操作中执行此操作的一种可能方法.
    • POST /faculties/
    • PUT /college/1/faculties
  • 从这所大学中删除一名教员.再两次操作
    • GET /college/1/faculties:相关院系列表.每个都会包含一个自我网址/faculties/1.
    • DELETE /college/1/faculties/1:网址看起来更好,但如何公开这个网址?
  • 在该学院下添加一个或多个院系.
    • PUT /college/1/faculties 接受这所大学院系的完整列表.
  • 完全删除该特定部门.
    • DELETE /sectors/1:看起来不错,但需要照顾缓存/faculties/1/sectors.

在这种情况下,什么是更好的方法?我已经阅读了关于公开会员资源的内容,但是通过这种方法,如果一所大学有10个院系,则需要10个单独的http电话才能从会员资格中获取所有这些资源.

而且,这只是完整关系树的一小部分.为了进一步扩展,系统说

  • 学院有很多部门
  • 部门有很多实验室等等.

此外,在RESTful架构中,客户端永远不应该填充URL.

有什么建议吗?

rest restful-architecture apiblueprint

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

RESTful端点的输入DTO是否应与输出DTO匹配?

我正在开发一个RESTful API,我在为API提供输入的过程中遇到了一些麻烦.

假设我有一个可以像这样获取的"Person"资源:api/person/{id}并返回如下对象:

public class Person
{
    public int Id { get; set; }
    public string Surname { get; set; }
    public string GivenName { get; set; }
    public DateTime DateOfBirth { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果我想更新那个人,API应该期待一个完整的Person实例,还是可以使用单独的DTO?

比如说,DateOfBirth不能改变,接受它作为输入是否被认为是RESTful:

public class UpdatePersonDto
{
    public string Surname { get; set; }
    public string GivenName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这意味着我将不得不为此端点api/person/{id}恢复Person使用时GET,而作为输入接收UpdatePersonDto使用时PUT.这对我来说听起来不对,但我不确定我是不是只是偏执狂.

所以我想我的问题总结为:接受给定资源端点上的数据结构是否适合与端点返回的数据结构不同?

rest restful-architecture

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

什么时候不使用REST API?

REST API始终被视为基础结构目的.我不是专家,但我发现他们应该实现的原则涉及水平扩展和性能.他们应该压制客户和服务之间的各种亲和力(没有会话等).从业务角度来看很少考虑REST API.

上周,团队中的某个人提议将遗留应用程序的一部分实现为REST API.此应用程序以前作为库(.NET)嵌入到请求它的每个应用程序中.REST API很快就遇到了性能问题(客户端和服务器之间的往返次数太多).作为一种解决方法,实现了缓存(在服务器端).在我看来,它违反了REST原则.如果没有缓存,我们应该为一个客户端提供许多服务器以获得可接受的性能,并行请求或负载均衡器(或类似的......).

在我们谈论API时,我认为这些API应该由业务需求驱动.根据您的经验,是否存在不适合REST的业务用例?

[编辑] API是关于模拟来自客户端的条目的工作流程...

api rest web-services restful-architecture

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

从Android/Java向Matlab发送数据

我花了一些时间寻找一种方法将数据从Android应用程序发送到Matlab - 没有办法.我更喜欢通过Restful webservice使用JSON.

我可能有错误的概念,这是如何工作的.

Matlab应该运行/等待来自我的Android设备的POST请求以接收数据,将其从json转换为matlab形式,进行并发送回来 - 而不是再次等待新请求.

像"webread"这样的"RESTful web服务"似乎不会等待传入数据并为它们激活.


如何让Matlab用json监听传入的数据?或者如何让Matlab从基于Android/Java的程序接收数据?我是否需要其他框架,api甚至是带数据库的服务器才能完成这项工作?

任何人都可以给我一些提示吗?

java matlab android json restful-architecture

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