【问题标题】:API Key and RESTKitAPI 密钥和 RESTKit
【发布时间】:2023-03-12 16:01:01
【问题描述】:

我将RESTKit 用于为我创建的服务。我的用户的 JSON 模型是:

{
    "api_key" : "123456"
    "user" : {
        "username" : "user1",
        "email"    : "me@email.com",
        "name"     : "name1",
        "surname"  : "surname1"
    }
}

如果我想获取用户/users/1.json,我需要介绍api_key。我在文档中阅读了有关设置应用程序范围的 API 密钥 HTTP 标头的信息。

例子是:

[client setValue:@"123456" forHTTPHeaderField:@"X-RESTKIT-API-KEY"];

这是正确的方法吗?我怎样才能发现我的@"X-RESTKIT-API-KEY" 我的服务? (不是 api_key 值,我搜索字符串替换 @"X-RESTKIT-API-KEY" 为我的服务)

【问题讨论】:

  • 这里要问什么?您想知道如何在服务器端检索提供的 api 密钥吗?
  • 不,我不知道。我问如何在我的服务中检索 HTTP Header API Key 的名称。我知道 api_key 值,我需要正确的字符串来替换我的服务中的 @"X-RESTKIT-API-KEY"。
  • 好吧,有问题的标头字段的名称完全取决于您的后端。您是否与您的私有 api 或公开可用的东西交互?
  • 这是一项私人服务。它是由一名雇佣开发人员为我创建的。他不知道自己要去哪里找这个名字。我是 iOS 开发人员,我对他的后端一无所知。如果你说什么,我可以问他一些事情。
  • 好吧,我猜您的雇佣开发人员必须实现通过标头接受 api 密钥的机制。他选择标题的名称,然后告诉你。如果没有准备好进行这种身份验证,Restkit 不会影响您的 api

标签: cocoa-touch restkit api-key


【解决方案1】:

嗯,对于该示例 GET 请求,我建议您使用 RKClient 对象。我给你举个例子:

#import <RestKit/RestKit.h>
#import "JSONKit.h"

RKClient* client = [RKClient clientWithBaseURL:@"http://yourdomainwhereisapi.com"]; 

在你的应用程序中的任何地方(因为 RKCLient 是单例对象)你可以调用:

// Here you need to define delegate in header (because delegate is self)
// Declare delegate in .h file with <RKRequestDelegate>
[[RKClient sharedClient] get:@"/some/api/call.json" delegate:self];

你必须定义委托方法:

- (void)request:(RKRequest*)request didLoadResponse:(RKResponse*)response {
      // where you handle response object
      // sample how to make NSDictionary from JSON response
      NSDictionary *deserializedData = [[response bodyAsString] objectFromJSONString];

      // Now you can get anything from this NSDictionary:
      NSLog("%@", [deserializedData objectForKey:@"api_key"];
}

附:无论如何,您可以查看 RestKit wiki 以查看基本示例:RestKit Wiki tutorial

【讨论】:

  • 首先,感谢@kondormit 的回答。我设置了我的 clientWithBaseURL,但如果我想获取 call.json,服务需要一个 api_key。我知道那个 api_key 的值,但我不知道如何在 RESTKit 中设置。 :-( 如果我在没有 api_key 的情况下执行 GET,我会收到禁止消息:{"error":"Forbidden"}
  • 嗯,我不太懂你。如果你在做 GET 你什么都不会发送。如果您正在执行 POST,您将发送一些带有 post (params) 的对象,您可以解析响应。请具体(给我一个真实的例子),以便我可以给你解决方案。
  • 如果我确实获得了一个用户,我需要给我的服务一个 api 值来访问这些数据。该服务是为我聘请的后端开发人员创建的。
  • 您需要使用 GET 发送经典参数吗?像 google.com?search=something
猜你喜欢
  • 1970-01-01
  • 2011-12-11
  • 2018-08-17
  • 1970-01-01
  • 2011-09-28
  • 2014-01-05
  • 1970-01-01
  • 2020-04-15
  • 2014-01-25
相关资源
最近更新 更多