如何重用Paw rest客户端中先前请求的变量?

时间:2016-10-11 20:53:26

标签: paw-app

我需要重复使用为我之前的请求生成的值。

例如,在第一次请求时,我对URL / api / products / {UUID}进行POST,并获得带有空体的代码201(Created)的HTTP响应。

在第二次请求时,我想通过请求获取该产品GET / api / products / {UUID},其中UUID应来自第一次请求。

那么,问题是如何在请求之间存储UUID并重用它?

4 个答案:

答案 0 :(得分:2)

您可以使用Request Sent动态值https://paw.cloud/extensions?extension_type=dynamic_value&q=request+send,这些值将获得您上次发送给定请求的请求时使用的值。

在您的情况下,您需要将URLSentValueRegExMatchhttps://paw.cloud/extensions/RegExMatch)结合起来,先获取上次发送请求的网址,然后从中提取UUID网址。

e.g

请求A) Request With UUID 请求B) Request That uses other requests UUID

答案 1 :(得分:1)

鉴于此类情况,假设{UUID}是您的替代“变量”: Original tag in URL

它可能很简单,它逃脱了你。您需要做的就是创建一个文本文件,比如说UUID.txt:

UUID in text file

(样本数据说“12345678U910”为文件中的文字)

然后,您需要做的就是将URL中的{UUID}替换为文件的动态令牌。删除{UUID}部分,然后右键单击URL所在的行并选择

添加动态值 - >档案 - >文件内容:

Add Dynamic Value - File Content

您将获得一个拖放接收小部件:

File Drag-n-Drop Receiver Widget

按“选择文件...”或将文件拖放到接收器小部件中:

File Drag-n-Drop Receiver Widget with File

不要担心动态变量令牌(URL中的蓝色内容)还没有改变......然后点击其他地方让drop接收器消失,你将拥有你想要的,你可以使用的变量跨URL或其他任何地方(标题字段,表单字段,正文等):

enter image description here

Paw是一个很棒的工具,当您探索动态值功能时,它会逐渐变得非常棒。我发现最强大的是正则表达式解析,它可以解析原始回复HTML并捕获你想要的任何下一个请求......例如,如果你的UUID来自某些用户输入并被摄入服务器,那么返回在html回复中,您可以从回复HTML中捕获该内容并将其重新注入到URL或任何字段中,甚至可以使用Paw的动态值功能将其添加到cookie中。

答案 2 :(得分:0)

问题出在第一次请求答案中。只是不要回复“[......]一个空洞的身体。”

如果您正在谈论REST设计,您将在第一个请求中返回UUID,客户端将在第二次调用中使用它:GET / api / products / {UUID}

REST背后的基本思想是,服务器不存储有关先前请求的任何信息,并且是“无状态”。

我还会调整您的第一个查询。一般来说,服务器应该生成UUID并返回它(也许你有理由打破它,那么请原谅我)。您的服务器(至少有时)有一个更好的随机生成器,您可以避免冲突。所以你通常会这样设计:

CLIENT: POST /api/products/ -> Server returns: 201 {product_id: UUID(1234...)}
Client: GET  /api/products/{UUID} -> Server returns: 200 {product_detail1: ..., product_detail2: ...}

如果您的客户“失去”信息并且您希望他以后能够获得他的产品,您通常会实现这样的API端点:

Client: GET  /api/products/ -> Server returns: 200 [{id:UUID(1234...), title:...}, {id:UUID(5678...),, title:...}]

答案 3 :(得分:0)

@ chickahoona的回答触及了更正常的做法,第一个请求发布到没有UUID的端点,服务器返回它。有了这些,您就可以使用RegExpMatch扩展名从服务器的响应中提取值,并在后续请求中使用它。

或者,如果您必须在客户端生成UUID,那么RegExpMatch扩展可以再次提供帮助,只需为源选择创建请求的URL并提供将从其末尾剥离UUID的正则表达式,例如/([^/]+)$

第三个选项我会抛弃给你,将UUID放在environment variable中,并让你的所有请求从那里引用它。