2017-07-04 133 views
2

我正在使用NodeJs和表达中间件来编写一个休息服务。我有以下问题 -Rest Api最佳实践 - 以查询参数的形式传递日期

  1. 我得把用户ID,并在每个服务标识进行验证,而不管方法类型,即GETPOSTPUTDELETE的。把这两个参数作为请求头或查询参数的最好方法是什么?我不想把它作为身体参数,因为获得请求不会有身体。

  2. 我想写一个方法类型为GET的服务用于数据检索,这个调用的参数是字符串和日期。如何将这些参数传递给查询参数,特别是日期参数应该作为js日期还是其他格式传递?

    GET - https://localhost:someport/<objectid>/<createddate> 
    headers - x-user-id:someid 
          x-access-token:sometoken 
    

    如果这样,那么应该传递哪个格式的创建日期。

    还是应该使用下面的那个?

    GET - https://localhost:someport/ 
    headers - x-user-id:someid 
          x-access-token:sometoken 
          x-object-id:someid 
          x-created-date:somedate 
    
+0

将标记放在标题和用户标识中作为get或post参数。 –

+0

标头中的标记是有道理的,但是您的用户标识是指get或post参数?该服务必须得到,所以邮政是没有问题的。现在得到只有标题和查询参数你建议哪一个? – Jeet

+0

我建议保持用户ID作为查询参数。和一个关于完全不相关的主题的笔记,如果你想支持后也然后相同的请求与查询参数,并没有正文将工作 –

回答

1

请求标头是发送这些敏感信息的最佳位置。标头在http请求的所有方法中很常见。因此,您不必担心像GETPOSTPUT这样的方法。如果你使用查询参数,那么我们会在Url中更丑陋。
此外,我不知道使用UserIDtoken。因为在宁静的服务器中我们也使用令牌来标识用户。因此,通常我们不会发送用户标识。

+0

我很欣赏你的答案,并且完全听起来不合用userid和token。我正在使用jwt作为您的信息,并且已经在令牌中传递了用户标识。我可以摆脱用户ID。所以多数民众赞成少,谢谢你:) – Jeet

1

休息了一会API设计的最佳实践说,公开哪些不敏感的用户信息获取请求作为查询参数的参数。所以用户ID和令牌像事情应该在标题和其他事情可以去获取请求参数。

选择头中只有用户标识和令牌的第一个。

+0

我同意,但问题是复杂的数据类型像日期应该作为查询参数传递? – Jeet

+0

是的日期可以在查询参数中传递。只要确保你的日期格式没有任何与保留的URL字符冲突的字符 –