Tag: 谷歌API

如何在Laravel 5.3中使用API​​路由

在Laravel 5.3中,API路由被移入了api.php文件。 但是我怎样才能在api.php文件中调用路由? 我试图创build一个这样的路线: Route::get('/test',function(){ return "ok"; }); 我尝试了以下URL但都返回了NotFoundHttpExceptionexception: http://localhost:8080/test/public/test http://localhost:8080/test/public/api/test 我怎样才能调用这个API的路线?

使用Rspec,我如何在Rails 3.0.11中testing我的控制器的JSON格式?

我search了网页,但是,唉,我似乎无法让Rspec正确发送内容types,所以我可以testing我的JSON API。 我正在使用RABL gem模板,Rails 3.0.11和Ruby 1.9.2-p180。 我的curl输出,工作正常(应该是一个401,我知道): mrsnuggles:tmp gaahrdner$ curl -i -H "Accept: application/json" -X POST -d @bleh http://localhost:3000/applications HTTP/1.1 403 Forbidden Content-Type: application/json; charset=utf-8 Cache-Control: no-cache X-Ua-Compatible: IE=Edge X-Runtime: 0.561638 Server: WEBrick/1.3.1 (Ruby/1.9.2/2011-02-18) Date: Tue, 06 Mar 2012 01:10:51 GMT Content-Length: 74 Connection: Keep-Alive Set-Cookie: _session_id=8e8b73b5a6e5c95447aab13dafd59993; path=/; HttpOnly {"status":"error","message":"You are not authorized to access […]

如何pipe理版本化API的底层代码库?

我一直在阅读关于ReST API的版本控制策略,而且他们似乎没有解决的是如何pipe理底层代码库。 比方说,我们正在对API进行一些重大更改 – 例如,更改我们的客户资源,以便返回单独的forename和surname字段,而不是单个name字段。 (在这个例子中,我将使用URL版本解决scheme,因为它很容易理解所涉及的概念,但是这个问题同样适用于内容协商或自定义的HTTP头部) 我们现在在http://api.mycompany.com/v1/customers/{id}有一个端点,在http://api.mycompany.com/v1/customers/{id}另一个不兼容的端点。 我们仍在向v1 API发布错误修正和安全更新,但新function开发现在都集中在v2上。 我们如何编写,testing和部署对我们的API服务器的更改? 我可以看到至less有两个解决scheme: 为v1代码库使用源代码控制分支/标记。 v1和v2是独立开发和部署的版本控制合并,在两个版本中都使用相同的修补程序 – 类似于在开发新版本时如何pipe理原生应用程序的代码库,同时还支持以前的版本。 使代码库本身意识到API版本,所以你最终得到一个包含v1客户表示和v2客户表示的代码库。 将版本控制视为解决scheme架构的一部分,而不是部署问题 – 可能使用命名空间和路由的某种组合来确保请求由正确的版本处理。 分支模型的一个明显的优点是删除旧的API版本是很简单的 – 只要停止部署相应的分支/标签 – 但是如果你运行的是多个版本,那么最终可能会有一个非常复杂的分支结构和部署pipe道。 “统一的代码库”模式避免了这个问题,但是(我认为呢?)会使代码库中被废弃的资源和端点不再需要的时候更难。 我知道这可能是主观的,因为这不太可能是一个简单的正确答案,但我很好奇,要了解在多个版本中维护复杂API的组织是如何解决这个问题的。

尝试安装新的Google Analytics 3.0testing版时出现链接错误

我相信就在今天,Google发布了他们的iOS Analytics框架工作(版本3.0)的新更新。 当我按照指示并尝试运行代码时,我得到: 在libGoogleAnalyticsServices.a(NSData + zlib.o)“_deflate”中引用:“ _inflate ” :libGoogleAnalyticsServices.a中的l002(NSData + zlib.o)“_deflateEnd”,引用自libGoogleAnalyticsServices.a(NSData + zlib.o)中的l001:“_OBJC_CLASS_ $ _ ASIdentifierManager”,引用自libGoogleAnalyticsServices.a中的objc-class-ref (TAGAdvertiserId.o)libGoogleAnalyticsServices.a中的objc-class-ref(TAGAdvertisingTrackingEnabledMacro.o)libGoogleAnalyticsServices.a中的objc-class-ref(TAGMobileAdwordsUniqueIdMacro.o) “_inflateEnd”,引用自libGoogleAnalyticsServices.a(NSData + zlib.o)中的l002:“_SCNetworkReachabilityCreateWithName”,引用自libGoogleAnalyticsServices.a中的l027(GAIReachabilityChecker.o)libGoogleAnalyticsServices.a中的l002(TAGNetReachability.o)​​“_SCNetworkReachabilitySetCallback”,参考:libGoogleAnalyticsServices.a(GAIReachabilityChecker.o)中的l027 libGoogleAnalyticsServices.a中的l002(TAGNetReachability.o)​​libGoogleAnalyticsServices.a中的l003(TAGNetReachability.o)​​“ deflateInit2 ”,引用自libGoogleAnalyticsServices.a中的l001(NSData + zlib。在libGoogleAnalyticsServices.a(TAGNetReachability.o)​​“_SCNetworkReachabilityUnscheduleFromRunLoop”中的libGoogleAnalyticsServices.a(GAIReachabilityChecker.o)l002中引用:“_SCNetworkReachabilityScheduleWithRunLoop”,引用自libGoogleAnalyticsServices.a(GAIReachabilityChecker.o)中的l027; libGoogleAnalyticsServices中的l003。 (TAGNetReachability.o)​​ld:symbol(s)找不到架构armv 7铛:错误:链接器命令失败,退出代码1(使用-v看到调用) 可能他们忘了包含我需要添加的库? (他们忘记改变指令的其他方面)。 否则,按照他们的指示开球,仍然没有得到所需的结果。

我应该在公共API中使用UUID作为资源吗?

我正在构build一个SaaS应用程序,并希望公开与当前数据存储实现(Postgres自动递增ID)无关的资源的ID。 这些堆栈溢出的post( 一 两个 )表明,创build本地唯一的ID是很难的,我不如使用UUID,这当然很容易和安全地生成几乎任何语言。 我对这种方法很满意,但是我想知道为什么我找不到来自大型SaaS /托pipe公司的任何API。 例如: Shopify: 9位数字 Twilio: 34个字符的string Twitter: 20+位数字 AMEE: 12个字符A-Z0-9 所以基本上没有人使用UUID。 有没有这个原因 – 这里没有发明,更聪明的内部身份证algorithm或其他? 在我的情况下,在没有任何内部algorithm的情况下,使用UUID最合适吗?

Sinatra – API – 身份validation

我们将在Sinatra开发一个小的API应用程序。 什么是可用于保护API调用的身份validation选项?

如何为基本authentication发送正确的授权标头

我试图从我的API获取POST数据,但我不能通过基本身份validation… 我尝试: $.ajax({ type: 'POST', url: http://theappurl.com/api/v1/method/, data: {}, crossDomain: true, beforeSend: function(xhr) { xhr.setRequestHeader('Authorization', 'Basic ZWx1c3VhcmlvOnlsYWNsYXZl'); } }); 我的服务器configuration响应是: response["Access-Control-Allow-Origin"] = "*" response["Access-Control-Allow-Methods"] = "POST" response["Access-Control-Max-Age"] = "1000" response["Access-Control-Allow-Headers"] = "*" 我得到的标题是: 请求头 OPTIONS /api/v1/token-auth/ HTTP/1.1 Host: theappurl.com Connection: keep-alive Access-Control-Request-Method: POST Origin: http://127.0.0.1:8080 User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 […]

正确的REST响应为空表?

假设您想通过调用get api/users来获取用户列表,但是目前表被截断,所以没有用户。 什么是这种情况下404或204的正确答案?

传统Web应用程序和API中的身份validation,授权和会话pipe理

如果我错了,请纠正我:在传统的Web应用程序中,浏览器会自动将会话信息附加到对服务器的请求中,以便服务器知道请求来自谁。 实际上究竟追加了什么? 但是,在基于API的应用程序中,这些信息不会自动发送,所以在开发API时,我必须检查自己,例如请求是否来自经过身份validation的用户? 这通常如何完成?

JSONDecodeError:期望值:第1行第1列(char 0)

我得到错误Expecting value: line 1 column 1 (char 0)试图解码JSON时。 我用于API调用的URL在浏览器中正常工作,但是通过curl请求完成这个错误。 以下是我用于curl请求的代码。 错误发生在return simplejson.loads(response_json) response_json = self.web_fetch(url) response_json = response_json.decode('utf-8') return json.loads(response_json) def web_fetch(self, url): buffer = StringIO() curl = pycurl.Curl() curl.setopt(curl.URL, url) curl.setopt(curl.TIMEOUT, self.timeout) curl.setopt(curl.WRITEFUNCTION, buffer.write) curl.perform() curl.close() response = buffer.getvalue().strip() return response 完全追溯: 追溯: File "/Users/nab/Desktop/myenv2/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 111. response = callback(request, *callback_args, **callback_kwargs) File […]