相关疑难解决方法(0)

如何在新的Router V 3 alpha(vladivostok)中使用routerLink传递查询参数

我想传递一个查询参数prop=xxx.

这没用

<a [routerLink]="['/somepath', {queryParams: {prop: 'xxx'}}]>Somewhere</a>
Run Code Online (Sandbox Code Playgroud)

angular2-routing angular

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

何时使用查询参数与矩阵参数?

查询参数:http://example.com/apples?order=random&color=blue

矩阵参数:http://example.com/apples;order=random;color=blue

  1. 应该何时使用查询参数与矩阵参数?
  2. 为什么矩阵参数可以在URL的中间使用,但查询参数不能?例如:http://example.com/apples;order=random;color=blue/2006/archive
  3. 如果矩阵参数是查询参数的超集,为什么不一直使用它们呢?

您可以在此处阅读有关矩阵参数的更多信息:http://www.w3.org/DesignIssues/MatrixURIs.html

uri query-parameters

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

同一资源的不同RESTful表示

我的应用程序有一个资源/foo.通常,它由HTTP响应有效负载表示,如下所示:

{"a": "some text", "b": "some text", "c": "some text", "d": "some text"}
Run Code Online (Sandbox Code Playgroud)

客户端并不总是需要此对象的所有四个成员.什么是RESTful语义方式,客户端告诉服务器它在表示中需要什么?例如,如果它想要:

{"a": "some text", "b": "some text", "d": "some text"}
Run Code Online (Sandbox Code Playgroud)

应该怎么GET做?一些可能性(如果我误解了REST,我正在寻找纠正):

  • GET /foo?sections=a,b,d.
    • 查询字符串(毕竟称为查询字符串)似乎意味着"找到符合此条件的资源并告诉我它们",而不是"根据此自定义向我表示此资源".
  • GET /foo/a+b+d我最喜欢的REST语义不包括这个问题,因为它简单.
    • 打破URI不透明度,违反HATEOAS.
    • 似乎打破了资源(URI的唯一含义是识别一种资源)和表示之间的区别.但这是有争议的,因为它与/widgets代表一个可呈现的/widget/<id>资源列表是一致的,我从来没有遇到过这样的问题.
  • 放松我的约束,响应GET /foo/a等,让客户端根据需要为每个组件发出请求/foo.
    • 将开销相乘,如果/foo有数百个组件且客户端需要100个组件,这可能会成为一场噩梦.
    • 如果我想支持HTML表示/foo,我必须使用Ajax,如果我只想要一个可以被抓取,由极简主义浏览器呈现的HTML页面等,这是有问题的.
    • 为了维护HATEOAS,它还需要链接到其他表示中存在的那些"子资源",可能在/foo:{"a": {"url": "/foo/a", "content": "some text"}, ...}
  • GET /foo,Content-Type: application/json{"sections": ["a","b","d"]}在请求正文中.
    • 不可指定和不可缓存.
    • HTTP没有定义主体语义 …

api rest url web-applications http

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

JAX-RS中QueryParam和MatrixParam有什么区别?

JAX-RS @QueryParam@MatrixParam?之间的区别是什么?从文档中,queryparam和matrixparam都可以在特殊条件下定位一个资源.那么用例区别是什么?

PS:

Queryparam:

url ? key=value;

Matrixparam

url; key=value;

java jax-rs

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

Angular2与矩阵url表示法

矩阵url表示法是创建带参数的URL的"默认",还是更好地使用"旧"表示法?和&.我对angular.io文档没有理解

localhost:3000/heroes;id=15;foo=foo
Run Code Online (Sandbox Code Playgroud)

要么

localhost:3000/heroes?id=15&foo=foo
Run Code Online (Sandbox Code Playgroud)

angular2-routing angular

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

如何在Angular2中更新矩阵参数

在Angular2中,有没有办法更新矩阵参数,但导航到同一个组件?基本上想要从一个看起来像这样的网址轻松过渡:

/search;term=paris;pageSize=24;currentPage=1;someFilter=value;

同样的事情,但在分页时更新currentPage:

/search;term=paris;pageSize=24;currentPage=2;someFilter=value;

使用router.navigate似乎并不是最佳选择,因为我必须编写大量自己的逻辑来重新构建用于navigate使用的URL (重新构建已经存在的东西).

对于踢腿和咯咯笑,我确实尝试过

this._router.navigate([this._router.url, {currentPage: this.pagination.currentPage}]);

但是(正如你所料),路由器对于当前网址上有矩阵参数这一事实是愚蠢的,所以结果不是很好.

编辑:还应该提到可能有任意数量的矩阵参数的附加键/值对,因此硬编码任何路由都是不可能的

编辑:我以后尝试使用preserveQueryParams: true像:

this._router.navigate(["..", {currentPage: this.pagination.currentPage}], {preserveQueryParams: true});

为了获得一个易于使用/可转移的解决方案,但这并没有保持路线上的矩阵参数.

更新:我已经实现了自己的逻辑来获得所需的行为,所以这里是解决方案的代码片段:

  let currentParamsArr: Params = this.route.snapshot.params;
  let currentParamsObj: any = { };
  for (let param in currentParamsArr) {
    currentParamsObj[param] = currentParamsArr[param];
  }
  currentParamsObj.currentPage = +pageNum; //typecasting shortcut

  this._router.navigate([currentParamsObj], { relativeTo: this.route });
Run Code Online (Sandbox Code Playgroud)

这段代码循环遍历参数(因为它们位于快照中),并从中创建一个对象,然后添加/编辑我想要更新的参数,然后导航到"新"路径

但是,这并不漂亮,因为我在程序的许多地方基本上都有相同的逻辑,或者必须对路由器进行修改或提供其他一些通用方法.

javascript angular-ui-router angular

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

网址:分号而不是问号

我正在以这种格式调用Web服务:

HTTP://some.server/rest/resource; A = B

它有效,但这是有效的吗?我见过了; 用作替代&但从未见过这样的网址.我一直在寻找答案,但没有找到有效的答案.如果有效,这种网址的含义是什么?

rest url

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

在url中使用下划线连接复合键是好/坏设计吗?

我正在寻找以下用例的RESTful API设计的最佳实践:

Table1     Table2
Id1        Id1
Id2        Id2
Id3        Id3
Name       Name
           Table1Id1(FK to Table1)
           Table1Id1(FK to Table1)
           Table1Id1(FK to Table1)
Run Code Online (Sandbox Code Playgroud)

假设我有如下表1的端点:

/root/table1 (to get list of records)
/root/table2 (to get single record by primary key)
Run Code Online (Sandbox Code Playgroud)

现在我的问题是从第二个以下代表第二个网址中的复合键的最佳方式:

/root/e1/Id1/Id2/Id3

or 

/root/e1?Id1=1&Id2=2&Id3=3
Run Code Online (Sandbox Code Playgroud)

假设我有如下表2的端点:

/root/table1/Table1Id1_Table1Id2_Table1Id1/table2 (to get list of records for table2 by table1).
Run Code Online (Sandbox Code Playgroud)

现在这里是我的问题,在url之上是有效的,并且在复合键的情况下是否合适?

关于此用例的良好模式的任何建议将不胜感激.

api rest asp.net-web-api

6
推荐指数
2
解决办法
1637
查看次数

具有复合ID的REST API设计

为具有复合ID的对象设计RESTful资源的最佳方法是什么?例如,假设我有一个GET /people用于获取人员记录列表的资源.一个人没有一个身份证; 相反,它由firstName,lastName和birthdate标识.我该如何设计资源以获得一个人?

rest http

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

将REST调用中的@PathParam值存储在列表或数组中

我的功能看起来像这样:

    @PUT
    @Path("property/{uuid}/{key}/{value}")
    @Produces("application/xml")    
    public Map<String,ValueEntity> updateProperty(@Context HttpServletRequest request,
            @PathParam("key") String key,
            @PathParam("value") String value,
            @PathParam("uuid") String uuid) throws Exception {
                                       ...
                             }
Run Code Online (Sandbox Code Playgroud)

我必须修改它,因此它接受来自REST调用的无限(或许多)键值对列表,例如

@Path("property/{uuid}/{key1}/{value1}/{key2}/{value2}/{key3}/{value3}/...")
Run Code Online (Sandbox Code Playgroud)

是否可以将它们存储在数组或列表中,所以我没有列出几十个@PathParams和参数,以避免这种情况:

@PathParam("key1") String key1,
@PathParam("key2") String key2,
@PathParam("key3") String key3,
Run Code Online (Sandbox Code Playgroud)

java rest servlets jax-rs path-parameter

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

RESTApi 端点获取多个资源

下面的操作只检索请求中的所有书籍。这显然是一个GET操作。

从你的角度来看,做下面这两个更好(赞成/反对):

  • 笔记:

获取 - api/library/2/books/

从图书馆 2 中检索所有书籍。

  • 使用获取:

GET - api/library/2/books/3/5/10/33/...../pages

  • 使用 POST:

POST - api/library/2/books/pages

身体:

{
    "books_id": [
        2,
        30,
        40,
        20,
        30
    ]
}
Run Code Online (Sandbox Code Playgroud)

我真的很怀疑使用POSTGET方法来实现它。如果要检索 100-200 本书,URL 上的书籍 ID 会变得非常混乱。我想在这里得到一些启示。

我正在使用 PHP 来处理 Rest 应用程序,上面的所有这些方法都是有效的。

rest api-design http

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