问题标签 [siesta-swift]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
393 浏览

ios - 午睡 REST 登录

如何将我的登录用户URLSession代码翻译成Siesta 框架代码?我目前的尝试不起作用。

我已经查看了 GithubBrowser 中的示例,但我拥有的 API 并不能那样工作。

问题是用户结构在某种程度上被我正在使用的 API 中的端点的工作方式所分割。端点是http://server.com/api/key。是的,它确实被称为key而不是useror login。作者之所以这么称呼它,是因为您发布了一个用户/通行证对并取回了密钥。所以它需要(通过帖子)一个 json 结构,如:

作为响应返回:

我有一个SessionUser结构:

...封装了用户的状态(REST 中的“S”)。问题是要发布名称和密码,而令牌是响应

当这种状态发生变化时,我会做我的:

一个实例存储在一个单例中,由配置块拾取,以便将来自 API 的令牌放入所有其他 API 请求的标头中:

顺便说一句,那个令牌注入部分已经运行良好。耶,午睡!

URLSession 版本

与 Siesta 相比,这有点臃肿,我现在不使用它,但它曾经是这样的:

午睡版

这是我现在的尝试:

它有点工作,但是 Siesta 没有保存登录凭据,我不得不为登录状态安装一个新的通知系统,我希望 Siesta 会为我做。

我想使用 Siesta 的缓存,以便 SessionUser 对象在本地缓存,如果需要,我可以使用缓存的凭据获取新令牌。目前,我有一个使用UserDefaults.

任何帮助表示赞赏!

0 投票
1 回答
78 浏览

ios - Siesta-Swift:有没有办法查明 Resource.latestData 是否发生了变化?

我的代码如下所示:

如果 URL 总是返回 200(不是 301),有没有办法检查数据本身、json 内容是否已更改resourceevent是否相同?

我想实现应用程序在后台加载并且仅在 JSON 本身发生更改时才触发 UI 操作的行为。

0 投票
1 回答
281 浏览

swift - 从 Siesta 响应中获取 HTTPURLResponse

我正在与执行 304 重定向的 REST API 作斗争;我需要的是获取重定向的目标 URL 并用浏览器打开它(我知道,这有点变态)。我成功拦截了重定向,这要归功于这个可爱的小伙子 reversepanda: https ://github.com/bustoutsolutions/siesta/issues/210 但我仍然不知道如何在 GET 请求的回调中获取重定向 URL(成功或失败)

关于如何解决这个问题的任何建议?

谢谢!

0 投票
1 回答
243 浏览

swift - 如何用异步任务装饰午睡请求

在请求发生之前更改Request执行异步任务的正确方法是什么?

所以任何请求 Rn 都需要变成透明的 Tn 然后 Rn。

这里有一点背景:任务是一个第 3 方 SDK,它分派我需要用作原始请求的标头的令牌。

我的想法是装饰 Rn,但在这样做时,我需要将我的 Tn 任务转换为Request我可以链接的 Siesta。

所以我包装了异步任务并链接到我的原始请求。因此任何Rn都会变成Tn.chained { .passTo(Rn) } 这样,这种新行为对整个应用程序是完全透明的。

问题

这样做我的代码最终会在 Siesta 内部前提条件下崩溃: precondition(completedValue == nil, "notifyOfCompletion() already called")

在我的自定义 AsyncTaskRequest 中,我收集成功、失败、进度等的回调,以便在 SDK 传递令牌时在主队列上触发它们。

我注意到一旦执行删除所有存储的回调,崩溃就会消失,但老实说我没有找到原因。

我希望有足够的信息来提供一些提示或建议。先感谢您。

0 投票
1 回答
253 浏览

ios - Siesta 加载在陈旧资源上失败

当我在经过一段时间(例如几个小时)后启动我的应用程序(模拟器或手机)时,Siesta 不会加载我的资源,并且statusOverlay()会无限期地显示。

详细地说,我有一个HomeViewController,它发出以下请求onViewAppear

在我的viewDidLoad文件中,我指定了个人资源观察者,如下所示:

资源和 Siesta 实例在 Api 类中定义。虽然此代码在应用程序的常规使用中运行良好,但当应用程序处于后台或关闭一段时间时,它会遇到困难。

完整的 Siesta 日志记录结果如下(不记名令牌是有效的,但为了便于阅读而被截断):

实际上,没有发出 GET 请求,并且 statusOverlay 仍然可见。

完全重启应用程序可以解决问题,但这当然不适合最终用户。

你有什么想法我可以解决这个问题吗?提前谢谢了!

0 投票
0 回答
20 浏览

siesta-swift - Swift Siesta 转换器管道区分 `/path/{id}` 和 `/path/special-token`

假设我正在设置我的转换器并且需要处理两个返回不同对象模式的相似 API 路由,例如

在这种情况下,Siesta 似乎无法区分,因为路径匹配只支持基本 glob。所以我们能做的最好的就是

当然,/beers/*也会 match /beers/grouped-by-country,因此它会尝试将响应解析为错误的对象类型。

在这种情况下有没有办法区分路线?

0 投票
1 回答
87 浏览

swift - 无法安装午睡 1.4.2

无法安装 siesta 1.4.2。默认情况下,它正在安装 1.1.1。

也低于 1.1.1 的错误

:-1: 意外重复任务:CompileXIB /Users/volansys/Documents/workspace/Projects/Rheem_2/RheemEcoNet/Pods/Siesta/Source/SiestaUI/ResourceStatusOverlay.xib(在目标'Siesta'中)

0 投票
1 回答
58 浏览

ios - 在 Siesta 中覆盖本地数据?

我无法在 Swift 中成功设置 Siesta 的本地数据。我的目标是UIImageURL本地设置一个,这样就可以在没有下载时间的情况下显示这个本地图像。

为此,我将 URL 的图像数据设置为:

然后,我使用了一个始终尝试将内容解析为图像的自定义服务:

该系统适用于所有远程图像,但它似乎总是无法解析这个被覆盖的本地图像。似乎它正在尝试解析,但每次都失败。

即我得到Siesta.ResourceEvent一个

但实际.typedContentnil

0 投票
0 回答
380 浏览

ios - 使用 Siesta 发布 API 时,请求方法返回“无法解析服务器响应”错误

我在使用 Siesta for iOS 解析 API 调用的响应时遇到问题。在我发布 JSON 后,它无法尝试解析响应。

API 仅在正文中返回“成功”。

据我了解,“成功”是有效的 JSON,但是,因为它不是数组或字典,Siesta 会抛出“无法解析服务器响应”错误。

当我为 Siesta 启用详细日志时,它给了我以下错误:

错误:RequestError(userMessage:“无法解析服务器响应”,httpStatusCode:nil,实体:nil,原因:可选(Siesta.RequestError.Cause.JSONResponseIsNotDictionaryOrArray(actualType:NSTaggedPointerString)),时间戳:562010225.337566)

有没有办法强制 Siesta 接受它作为有效的 JSON 响应?如果是这样,我需要采取哪些具体步骤才能实现这一目标?我看到其他线程建议添加一个已经完成但对我不起作用的扩展。

0 投票
1 回答
61 浏览

swift - 如何使用 Siesta Swift 使另一个 ViewController 的 post 请求返回的响应对象附加到 TableViewController

我是一个 Swift 初学者,所以很抱歉。对于 Siesta,我想在 ViewController 中发出一个发布请求,然后将请求返回的 Entry 对象添加到 TableViewController。在我的视图控制器中:

API 代码:

在 post 请求之后,ViewController 对 TableViewController 执行 unwind segue,当然是在 post 请求完成之前。我不确定我将在代码中的哪个位置获取响应并调用 TableViewController 中的一个函数,该函数将新的 Entry 对象附加到条目列表中。

我不确定是否应该将新的 Entry 对象从addEntry()函数传递给 TableViewController,onSuccess()或者 TableViewController 是否可以拥有newEntry()资源并知道发布请求何时完成。我也不确定我是否以正确的方式处理这件事。提前致谢。