{"action":"created","comment":{"url":"https://api.github.com/repos/xitu/gold-miner/pulls/comments/61853473","id":61853473,"diff_hunk":"@@ -1,254 +1,217 @@\n->* 原文链接 : [Optimize Battery Life with Android's GCM Network Manager](https://www.bignerdranch.com/blog/optimize-battery-life-with-androids-gcm-network-manager/)\n-* 原文作者 : [Matt Compton](https://www.bignerdranch.com/about-us/nerds/matt-compton/)\n-* 译文出自 : [掘金翻译计划](https://github.com/xitu/gold-miner)\n-* 译者 : \n-* 校对者:\n+# 使用GCM网络管理工具优化电池使用\n \n+[原文链接：https://www.bignerdranch.com/blog/optimize-battery-life-with-androids-gcm-network-manager/](https://www.bignerdranch.com/blog/optimize-battery-life-with-androids-gcm-network-manager/)\n \n-The [GCM Network Manager](https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager) enables apps to register services that perform network-oriented tasks, where a task is an individual piece of work to be done. The API helps with scheduling these tasks, allowing Google Play services to batch network operations across the system.\n+通过GCM网络管理工具我们可以注册用于执行网络任务的服务，其中每一个任务都是一件独立的工作。GCM的API帮助进行任务的调度，并让Google Play服务在系统中批量进行网络操作。\n \n-The API also helps simplify common networking patterns, such as waiting for network connectivity, network retries and backoff. Essentially, the GCM Network Manager allows developers to focus a little less on networking issues and more on the actual app, by providing a straightforward API for scheduling network requests.\n+其API还有助于简化网络操作模式，比如等待网络连接、进行网络重连与补偿等。总的来说，GCM网络管理工具通过提供一个简洁明快的网络请求调度API来帮助开发者在网络相关的问题上少费心思。\n \n-## Battery Concerns and Networking\n+## 电量和网络操作\n \n-Before diving into the GCM Network Manager and what it offers, let’s take a detour and talk about battery concerns in relation to network requests, so that we understand _why_ batching together network calls is important.\n+在深入GCM与其优势之前，我们先聊一聊与网络请求相关的电池使用问题，这有助于我们认识管理网络操作的重要性。\n \n-Here’s a diagram of the Android radio state machine:\n+下面是Android通讯模块(radio)的图解：\n \n-![Radio State Machine](https://www.bignerdranch.com/img/blog/2016/04/mobile_radio_state_machine.png \"Radio State Machine\")\n+![radio_diagram](http://7xpg2f.com1.z0.glb.clouddn.com/mobile_radio_state_machine.png)\n \n-It’s pretty straightforward. I include the diagram to reinforce the idea that waking up the radio is the most costly process when dealing with network connectivity. As such, network calls are one of the largest consumers of battery.\n+这个图还是挺清晰的。我想通过这个图标告诉大家唤醒通讯模块是处理网络连接时最耗电的操作，可见，网络操作是电池最大的消耗者。\n \n-No single network transaction kills the battery, though, but rather the sheer number of individual requests that wake up the radio. If network requests are launched separately from one another, then the device is constantly awoken and the radio turned on. A device being constantly woken and unable to sleep causes a significant drain on the battery (just like with people who can’t sleep).\n+虽然一个网络操作不可能耗尽电池，但唤醒通讯模块所发送的单个请求数目相当可观。如果网络请求是单独发送的，那么设备就会被持续唤醒，通讯模块也会保持开启状态。设备持续唤醒无法休眠会导致电量大幅消耗。（就如人睡不着觉一样）\n \n-The diagram below shows an individual network request from an image fetching app called PhotoGallery, one of the sample apps from our best-selling [Android programming book](https://www.bignerdranch.com/we-write/android-programming/):\n+下面的示意图说明了一个叫PhotoGallery的图片获取APP的单次网络请求。\n \n-![Single Network Request](https://www.bignerdranch.com/img/blog/2016/04/network_request_single.png \"Single Network Request\")\n+![network_request](http://7xpg2f.com1.z0.glb.clouddn.com/network_request_single.png)\n \n-Well, a single request doesn’t look so bad. The radio is awoken for it, but hey—it’s **only** one request, right?\n+看起来单词网络操作也没啥。网络模块被唤醒了，但这可只是单词请求。\n \n-Now here’s a diagram with multiple network calls:\n+而多次请求的示意图是这样的：\n \n-![Multiple Network Request](https://www.bignerdranch.com/img/blog/2016/04/network_request_multiple.png \"Multiple Network Request\")\n+![network_multiple](http://7xpg2f.com1.z0.glb.clouddn.com/network_request_multiple.png)\n \n-Suddenly we have multiple requests, and notice how the radio has woken up for each one, which will quickly drain the battery and annoy the end user.\n+现在我们有了多次网络请求，注意观察网络模块在每次请求时都被唤醒，这会快速消耗电量，让使用者不爽。\n \n-We can easily improve battery life by making network calls in batches, as this optimizes the cost of starting up the radio. If the most expensive part of the radio lifecycle is the initial waking-up stage, then we’ll simply wake it up only once across these multiple requests. This method works well if the data being requested isn’t needed immediately, but instead will be used at some point in the future.\n+在这里我们可以通过批量进行网络操作来优化电池使用，因为这可以减少启动网络模块所消耗的电量。如果网络模块生命周期中最耗电的部分是启动部分，那么我们可以在多次请求中只唤醒一次。如果我们所请求的数据不需要马上获取，而是在未来的某个时间点需要用到，那这种方式还算可行。\n \n-Here’s a diagram of the batched network calls:\n+批量网络请求的示意图如下：\n \n-![Batched Network Request](https://www.bignerdranch.com/img/blog/2016/04/network_request_batched.png \"Batched Network Request\")\n+![network_batch](http://7xpg2f.com1.z0.glb.clouddn.com/network_request_batched.png)\n \n-Now the radio is only awoken once, saving battery life.\n+现在网络模块只会唤醒一次，省了不少电。\n \n-Sometimes you **do** need network calls immediately, like when you’re playing a game or sending a message. For those occasions, you should continue as normal with the individual network requests, but keep in mind that this type of network call does not optimize for battery life, network conditions or reboots.\n+有时你的确马上需要用到网络请求的数据，如打游戏或者发短信的情况。这些情况下，还是需要发送单次网络请求，不过要记住这对电池、网络状态和设备重启并无好处。\n \n ## GcmTaskService\n \n-Now that we’ve seen the usefulness of batching multiple network requests in order to optimize for battery efficiency, let’s dive into how to implement GCM Network Manager in an app.\n+既然我们已经看到了批量进行网络请求对优化电池使用能起到不小的作用，现在让我们在应用中实现GCM网络管理工具。\n \n-First, add the appropriate dependency for the GCM Network Manager to the `build.gradle` file:\n+首先，在build.gradle文件中添加GCM网络管理工具的依赖。\n \n+\tdependencies {\n+\t\t...\n+\t\tcompile 'com.google.android.gms:play-services-gcm:8.1.0'\n+\t\t...\n+\t}\n \n+切记只需依赖Google Play Services的GCM部分，不然你需要依赖所有的Google Play Service，而其中大部分是用不到的方法。\n \n-    dependencies {\n-        ...\n-        compile 'com.google.android.gms:play-services-gcm:8.1.0'\n-        ...\n-    }\n+下一步，我们需要在AndroidManifest中声明一个新的Service：\n \n+\t<service android:name=\".CustomService\"\n+\t\t\tandroid:permission=\"com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE\"\n+\t\t\tandroid:exported=\"true\">\n+\t\t<intent-filter>\n+\t\t\t<action android:name=\"com.google.android.gms.gcm.ACTION_TASK_READY\"/>\n+\t\t</intent-filter>\n+\t</service>\n \n+这里Service的name属性是继承了GcmTaskService的类的类名，GcmTaskService是与GCM网络管理工具交互的核心类。这个Service会处理任务的执行，这里的任务是任何网络工作的一部分。上面代码中action是ACTION_TASK_READY的intent-filter是用于接收GCM中的调度工具所发送的某任务可被执行的通知。","path":"TODO/optimize-battery-life-with-androids-gcm-network-manager.md","position":98,"original_position":98,"commit_id":"29d8cdd3a2e27b2c8692f197fe2f461200c47527","original_commit_id":"29d8cdd3a2e27b2c8692f197fe2f461200c47527","user":{"login":"geeeeeeeeek","id":7262715,"avatar_url":"https://avatars.githubusercontent.com/u/7262715?v=3","gravatar_id":"","url":"https://api.github.com/users/geeeeeeeeek","html_url":"https://github.com/geeeeeeeeek","followers_url":"https://api.github.com/users/geeeeeeeeek/followers","following_url":"https://api.github.com/users/geeeeeeeeek/following{/other_user}","gists_url":"https://api.github.com/users/geeeeeeeeek/gists{/gist_id}","starred_url":"https://api.github.com/users/geeeeeeeeek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/geeeeeeeeek/subscriptions","organizations_url":"https://api.github.com/users/geeeeeeeeek/orgs","repos_url":"https://api.github.com/users/geeeeeeeeek/repos","events_url":"https://api.github.com/users/geeeeeeeeek/events{/privacy}","received_events_url":"https://api.github.com/users/geeeeeeeeek/received_events","type":"User","site_admin":false},"body":"翻译的时候注意不要将Markdown syntax给去掉了，比如`ACTION_TASK_READY`。","created_at":"2016-05-03T08:52:42Z","updated_at":"2016-05-03T08:52:42Z","html_url":"https://github.com/xitu/gold-miner/pull/271#discussion_r61853473","pull_request_url":"https://api.github.com/repos/xitu/gold-miner/pulls/271","_links":{"self":{"href":"https://api.github.com/repos/xitu/gold-miner/pulls/comments/61853473"},"html":{"href":"https://github.com/xitu/gold-miner/pull/271#discussion_r61853473"},"pull_request":{"href":"https://api.github.com/repos/xitu/gold-miner/pulls/271"}}},"pull_request":{"url":"https://api.github.com/repos/xitu/gold-miner/pulls/271","id":66800268,"html_url":"https://github.com/xitu/gold-miner/pull/271","diff_url":"https://github.com/xitu/gold-miner/pull/271.diff","patch_url":"https://github.com/xitu/gold-miner/pull/271.patch","issue_url":"https://api.github.com/repos/xitu/gold-miner/issues/271","number":271,"state":"open","locked":false,"title":"Added files via upload","user":{"login":"chengdazhi","id":10631563,"avatar_url":"https://avatars.githubusercontent.com/u/10631563?v=3","gravatar_id":"","url":"https://api.github.com/users/chengdazhi","html_url":"https://github.com/chengdazhi","followers_url":"https://api.github.com/users/chengdazhi/followers","following_url":"https://api.github.com/users/chengdazhi/following{/other_user}","gists_url":"https://api.github.com/users/chengdazhi/gists{/gist_id}","starred_url":"https://api.github.com/users/chengdazhi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chengdazhi/subscriptions","organizations_url":"https://api.github.com/users/chengdazhi/orgs","repos_url":"https://api.github.com/users/chengdazhi/repos","events_url":"https://api.github.com/users/chengdazhi/events{/privacy}","received_events_url":"https://api.github.com/users/chengdazhi/received_events","type":"User","site_admin":false},"body":"add md file optimize-battery-life-with-androids-gcm-network-manager.md","created_at":"2016-04-18T05:23:45Z","updated_at":"2016-05-03T08:52:42Z","closed_at":null,"merged_at":null,"merge_commit_sha":"45b132a8d6c51c981017b3bed6e434dc57857ae8","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/xitu/gold-miner/pulls/271/commits","review_comments_url":"https://api.github.com/repos/xitu/gold-miner/pulls/271/comments","review_comment_url":"https://api.github.com/repos/xitu/gold-miner/pulls/comments{/number}","comments_url":"https://api.github.com/repos/xitu/gold-miner/issues/271/comments","statuses_url":"https://api.github.com/repos/xitu/gold-miner/statuses/29d8cdd3a2e27b2c8692f197fe2f461200c47527","head":{"label":"chengdazhi:translate","ref":"translate","sha":"29d8cdd3a2e27b2c8692f197fe2f461200c47527","user":{"login":"chengdazhi","id":10631563,"avatar_url":"https://avatars.githubusercontent.com/u/10631563?v=3","gravatar_id":"","url":"https://api.github.com/users/chengdazhi","html_url":"https://github.com/chengdazhi","followers_url":"https://api.github.com/users/chengdazhi/followers","following_url":"https://api.github.com/users/chengdazhi/following{/other_user}","gists_url":"https://api.github.com/users/chengdazhi/gists{/gist_id}","starred_url":"https://api.github.com/users/chengdazhi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chengdazhi/subscriptions","organizations_url":"https://api.github.com/users/chengdazhi/orgs","repos_url":"https://api.github.com/users/chengdazhi/repos","events_url":"https://api.github.com/users/chengdazhi/events{/privacy}","received_events_url":"https://api.github.com/users/chengdazhi/received_events","type":"User","site_admin":false},"repo":{"id":56478838,"name":"gold-miner","full_name":"chengdazhi/gold-miner","owner":{"login":"chengdazhi","id":10631563,"avatar_url":"https://avatars.githubusercontent.com/u/10631563?v=3","gravatar_id":"","url":"https://api.github.com/users/chengdazhi","html_url":"https://github.com/chengdazhi","followers_url":"https://api.github.com/users/chengdazhi/followers","following_url":"https://api.github.com/users/chengdazhi/following{/other_user}","gists_url":"https://api.github.com/users/chengdazhi/gists{/gist_id}","starred_url":"https://api.github.com/users/chengdazhi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chengdazhi/subscriptions","organizations_url":"https://api.github.com/users/chengdazhi/orgs","repos_url":"https://api.github.com/users/chengdazhi/repos","events_url":"https://api.github.com/users/chengdazhi/events{/privacy}","received_events_url":"https://api.github.com/users/chengdazhi/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/chengdazhi/gold-miner","description":"掘金翻译计划，翻译掘金上优质的英文文章","fork":true,"url":"https://api.github.com/repos/chengdazhi/gold-miner","forks_url":"https://api.github.com/repos/chengdazhi/gold-miner/forks","keys_url":"https://api.github.com/repos/chengdazhi/gold-miner/keys{/key_id}","collaborators_url":"https://api.github.com/repos/chengdazhi/gold-miner/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/chengdazhi/gold-miner/teams","hooks_url":"https://api.github.com/repos/chengdazhi/gold-miner/hooks","issue_events_url":"https://api.github.com/repos/chengdazhi/gold-miner/issues/events{/number}","events_url":"https://api.github.com/repos/chengdazhi/gold-miner/events","assignees_url":"https://api.github.com/repos/chengdazhi/gold-miner/assignees{/user}","branches_url":"https://api.github.com/repos/chengdazhi/gold-miner/branches{/branch}","tags_url":"https://api.github.com/repos/chengdazhi/gold-miner/tags","blobs_url":"https://api.github.com/repos/chengdazhi/gold-miner/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/chengdazhi/gold-miner/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/chengdazhi/gold-miner/git/refs{/sha}","trees_url":"https://api.github.com/repos/chengdazhi/gold-miner/git/trees{/sha}","statuses_url":"https://api.github.com/repos/chengdazhi/gold-miner/statuses/{sha}","languages_url":"https://api.github.com/repos/chengdazhi/gold-miner/languages","stargazers_url":"https://api.github.com/repos/chengdazhi/gold-miner/stargazers","contributors_url":"https://api.github.com/repos/chengdazhi/gold-miner/contributors","subscribers_url":"https://api.github.com/repos/chengdazhi/gold-miner/subscribers","subscription_url":"https://api.github.com/repos/chengdazhi/gold-miner/subscription","commits_url":"https://api.github.com/repos/chengdazhi/gold-miner/commits{/sha}","git_commits_url":"https://api.github.com/repos/chengdazhi/gold-miner/git/commits{/sha}","comments_url":"https://api.github.com/repos/chengdazhi/gold-miner/comments{/number}","issue_comment_url":"https://api.github.com/repos/chengdazhi/gold-miner/issues/comments{/number}","contents_url":"https://api.github.com/repos/chengdazhi/gold-miner/contents/{+path}","compare_url":"https://api.github.com/repos/chengdazhi/gold-miner/compare/{base}...{head}","merges_url":"https://api.github.com/repos/chengdazhi/gold-miner/merges","archive_url":"https://api.github.com/repos/chengdazhi/gold-miner/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/chengdazhi/gold-miner/downloads","issues_url":"https://api.github.com/repos/chengdazhi/gold-miner/issues{/number}","pulls_url":"https://api.github.com/repos/chengdazhi/gold-miner/pulls{/number}","milestones_url":"https://api.github.com/repos/chengdazhi/gold-miner/milestones{/number}","notifications_url":"https://api.github.com/repos/chengdazhi/gold-miner/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/chengdazhi/gold-miner/labels{/name}","releases_url":"https://api.github.com/repos/chengdazhi/gold-miner/releases{/id}","deployments_url":"https://api.github.com/repos/chengdazhi/gold-miner/deployments","created_at":"2016-04-18T05:13:33Z","updated_at":"2016-04-18T01:36:02Z","pushed_at":"2016-04-18T05:21:27Z","git_url":"git://github.com/chengdazhi/gold-miner.git","ssh_url":"git@github.com:chengdazhi/gold-miner.git","clone_url":"https://github.com/chengdazhi/gold-miner.git","svn_url":"https://github.com/chengdazhi/gold-miner","homepage":"http://gold.xitu.io","size":9130,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"xitu:master","ref":"master","sha":"818562d02740fe26cc7fe8264918b56e7caaa169","user":{"login":"xitu","id":10482599,"avatar_url":"https://avatars.githubusercontent.com/u/10482599?v=3","gravatar_id":"","url":"https://api.github.com/users/xitu","html_url":"https://github.com/xitu","followers_url":"https://api.github.com/users/xitu/followers","following_url":"https://api.github.com/users/xitu/following{/other_user}","gists_url":"https://api.github.com/users/xitu/gists{/gist_id}","starred_url":"https://api.github.com/users/xitu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xitu/subscriptions","organizations_url":"https://api.github.com/users/xitu/orgs","repos_url":"https://api.github.com/users/xitu/repos","events_url":"https://api.github.com/users/xitu/events{/privacy}","received_events_url":"https://api.github.com/users/xitu/received_events","type":"Organization","site_admin":false},"repo":{"id":45512989,"name":"gold-miner","full_name":"xitu/gold-miner","owner":{"login":"xitu","id":10482599,"avatar_url":"https://avatars.githubusercontent.com/u/10482599?v=3","gravatar_id":"","url":"https://api.github.com/users/xitu","html_url":"https://github.com/xitu","followers_url":"https://api.github.com/users/xitu/followers","following_url":"https://api.github.com/users/xitu/following{/other_user}","gists_url":"https://api.github.com/users/xitu/gists{/gist_id}","starred_url":"https://api.github.com/users/xitu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xitu/subscriptions","organizations_url":"https://api.github.com/users/xitu/orgs","repos_url":"https://api.github.com/users/xitu/repos","events_url":"https://api.github.com/users/xitu/events{/privacy}","received_events_url":"https://api.github.com/users/xitu/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/xitu/gold-miner","description":"掘金翻译计划，翻译掘金上优质的英文文章","fork":false,"url":"https://api.github.com/repos/xitu/gold-miner","forks_url":"https://api.github.com/repos/xitu/gold-miner/forks","keys_url":"https://api.github.com/repos/xitu/gold-miner/keys{/key_id}","collaborators_url":"https://api.github.com/repos/xitu/gold-miner/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/xitu/gold-miner/teams","hooks_url":"https://api.github.com/repos/xitu/gold-miner/hooks","issue_events_url":"https://api.github.com/repos/xitu/gold-miner/issues/events{/number}","events_url":"https://api.github.com/repos/xitu/gold-miner/events","assignees_url":"https://api.github.com/repos/xitu/gold-miner/assignees{/user}","branches_url":"https://api.github.com/repos/xitu/gold-miner/branches{/branch}","tags_url":"https://api.github.com/repos/xitu/gold-miner/tags","blobs_url":"https://api.github.com/repos/xitu/gold-miner/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/xitu/gold-miner/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/xitu/gold-miner/git/refs{/sha}","trees_url":"https://api.github.com/repos/xitu/gold-miner/git/trees{/sha}","statuses_url":"https://api.github.com/repos/xitu/gold-miner/statuses/{sha}","languages_url":"https://api.github.com/repos/xitu/gold-miner/languages","stargazers_url":"https://api.github.com/repos/xitu/gold-miner/stargazers","contributors_url":"https://api.github.com/repos/xitu/gold-miner/contributors","subscribers_url":"https://api.github.com/repos/xitu/gold-miner/subscribers","subscription_url":"https://api.github.com/repos/xitu/gold-miner/subscription","commits_url":"https://api.github.com/repos/xitu/gold-miner/commits{/sha}","git_commits_url":"https://api.github.com/repos/xitu/gold-miner/git/commits{/sha}","comments_url":"https://api.github.com/repos/xitu/gold-miner/comments{/number}","issue_comment_url":"https://api.github.com/repos/xitu/gold-miner/issues/comments{/number}","contents_url":"https://api.github.com/repos/xitu/gold-miner/contents/{+path}","compare_url":"https://api.github.com/repos/xitu/gold-miner/compare/{base}...{head}","merges_url":"https://api.github.com/repos/xitu/gold-miner/merges","archive_url":"https://api.github.com/repos/xitu/gold-miner/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/xitu/gold-miner/downloads","issues_url":"https://api.github.com/repos/xitu/gold-miner/issues{/number}","pulls_url":"https://api.github.com/repos/xitu/gold-miner/pulls{/number}","milestones_url":"https://api.github.com/repos/xitu/gold-miner/milestones{/number}","notifications_url":"https://api.github.com/repos/xitu/gold-miner/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/xitu/gold-miner/labels{/name}","releases_url":"https://api.github.com/repos/xitu/gold-miner/releases{/id}","deployments_url":"https://api.github.com/repos/xitu/gold-miner/deployments","created_at":"2015-11-04T03:29:13Z","updated_at":"2016-05-03T08:39:48Z","pushed_at":"2016-05-03T08:38:34Z","git_url":"git://github.com/xitu/gold-miner.git","ssh_url":"git@github.com:xitu/gold-miner.git","clone_url":"https://github.com/xitu/gold-miner.git","svn_url":"https://github.com/xitu/gold-miner","homepage":"http://gold.xitu.io","size":12896,"stargazers_count":1337,"watchers_count":1337,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":269,"mirror_url":null,"open_issues_count":33,"forks":269,"open_issues":33,"watchers":1337,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/xitu/gold-miner/pulls/271"},"html":{"href":"https://github.com/xitu/gold-miner/pull/271"},"issue":{"href":"https://api.github.com/repos/xitu/gold-miner/issues/271"},"comments":{"href":"https://api.github.com/repos/xitu/gold-miner/issues/271/comments"},"review_comments":{"href":"https://api.github.com/repos/xitu/gold-miner/pulls/271/comments"},"review_comment":{"href":"https://api.github.com/repos/xitu/gold-miner/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/xitu/gold-miner/pulls/271/commits"},"statuses":{"href":"https://api.github.com/repos/xitu/gold-miner/statuses/29d8cdd3a2e27b2c8692f197fe2f461200c47527"}}}}