Dribble API 文檔(一)

Dribbble API 文檔

概述(Overview)

請注意你必須注冊你的應(yīng)用并且在請求時(shí)使用OAuth認(rèn)證或使用你的API客戶端的access token進(jìn)行認(rèn)證追逮。在此之前庙洼,請務(wù)必仔細(xì)閱讀我們的條款及指引學(xué)習(xí)如何使用API漠另。

架構(gòu)(Schema)

所有的API訪問都是通過HTTPS,從api.dribbble.com/v1/接口訪問。所有數(shù)據(jù)都是通過JSON發(fā)送和接收的兰怠。

$ curl -i https://api.dribbble.com/v1/users/simplebits

HTTP/1.1 200 OK
Date: Thu, 13 Feb 2014 19:30:30 GMT
ETag: "def2bc69c674e5b48cd281aa12c2c8e9"
Server: nginx
Status: 200 OK
Content-Type: application/json; charset=utf-8
Cache-Control: max-age=0, private, must-revalidate
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1392321600

空字段包含為null擦酌,而不是被省略。

所有的時(shí)間戳返回ISO-8601格式:

YYYY-MM-DDTHH:MM:SSZ

參數(shù)(Parameters)

許多API方法都有可選參數(shù)瞻赶。對于GET請求而言,任何未被指定為一段路徑的參數(shù)可以作為一個(gè)HTTP查詢字符串參數(shù)傳遞:

$ curl -i "https://api.dribbble.com/v1/users/simplebits/followers?page=2"

在本例中派任,simplebits的值是在路徑中給user這個(gè)參數(shù)提供的砸逊,而page的值是在查詢字符串中傳遞的。

對于POST , PUT , DELETE請求, 未包含在URL中的參數(shù)應(yīng)使用JSON編碼掌逛,其Content-Type應(yīng)為application/x-www-form-urlencoded师逸。

客戶端錯(cuò)誤(Client Errors)

在API調(diào)用接收請求主體時(shí)時(shí)有兩種類型的客戶端錯(cuò)誤。

1. 發(fā)送無效JSON豆混。

Status: 400 Bad Request
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
{
  "message" : "解析JSON時(shí)出現(xiàn)問題."
}

2. 發(fā)送無效字段篓像。

Status: 422 Unprocessable Entity
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
{
  "message" : "認(rèn)證失敗.",
  "errors" : [
    {
      "attribute" : "主體",
      "message" : "不能為空"
    }
  ]
}

HTTP動作(HTTP Verbs)

如果可能的話,每次操作API盡量的使用恰當(dāng)?shù)腍TTP動作皿伺。

動作 描述
GET 用于接收資源员辩。
POST 用于創(chuàng)造資源。
PUT 用于更新資源鸵鸥,或進(jìn)行自定義操作奠滑。
DELETE 用于刪除資源。

認(rèn)證(Authentication)

有兩種方式通過Dribbble API進(jìn)行身份驗(yàn)證妒穴。

OAuth2 Token (在報(bào)頭中發(fā)送)

$ curl -H "Authorization: Bearer OAUTH_TOKEN" https://api.dribbble.com/v1/user

OAuth2 Token (作為參數(shù)發(fā)送)

$ curl "https://api.dribbble.com/v1/user?access_token=OAUTH_TOKEN"

頁碼(Pagination)

返回多個(gè)項(xiàng)目的請求默認(rèn)將被分為每頁30項(xiàng)宋税。您可以使用page參數(shù)規(guī)定更多頁面。對于一些資源宰翅,你還可以使用per_page參數(shù)設(shè)置高達(dá)100的自定義頁面容量弃甥。請注意,由于技術(shù)原因汁讼,不是所有的接口都支持per_page參數(shù)淆攻。

$ curl "https://api.dribbble.com/v1/user/followers?page=2&per_page=100"

注意阔墩,省略page參數(shù)將返回第一頁。

鏈路報(bào)頭(Link Header)

頁碼信息包含在鏈路報(bào)頭中瓶珊⌒ン铮可能某些其它資源不根據(jù)頁面數(shù)量進(jìn)行分頁,重要的是按照這些Link Header的值來定伞芹,而不是自己構(gòu)建URL忘苛。例如,請求第二頁時(shí)唱较,可以提供以下報(bào)頭:

Link: <https://api.dribbble.com/v1/user/followers?page=1&per_page=100>; rel="prev",
      <https://api.dribbble.com/v1/user/followers?page=3&per_page=100>; rel="next"

rel 的值可能是:

Name Description
next 顯示結(jié)果直屬的下一個(gè)頁面的URL扎唾。
prev 顯示結(jié)果直屬的上一個(gè)頁面的URL。

限流(Rate Limiting)

對于使用OAuth登陸的請求南缓,您可以設(shè)置已認(rèn)證的用戶最高每分鐘60次胸遇,每人每天1,440次。對于使用你應(yīng)用程序的客戶端訪問令牌(Client Access Token)那些未經(jīng)授權(quán)的請求汉形,你可以設(shè)置最高每分鐘60次纸镊,每天10,000次。

你可以檢查任一API請求返回的HTTP報(bào)頭來查看當(dāng)前每分鐘限流的狀態(tài):

$ curl -i https://api.dribbble.com/v1/users/simplebits

HTTP/1.1 200 OK
Status: 200 OK
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1392321600
The headers tell you everything you need to know about your current rate limit status:
Header Name Description
X-RateLimit-Limit 允許該客戶每分鐘發(fā)出請求的最大數(shù)目概疆。
X-RateLimit-Remaining 當(dāng)前限流窗口的剩余請求數(shù)量逗威。
X-RateLimit-Reset 當(dāng)前限流窗口的重置時(shí)間。從UTC紀(jì)元開始岔冀。(1970-01-01 00:00:00 UTC)

如果你需要時(shí)間顯示為不同的格式凯旭,任何現(xiàn)代編程語言可以都完成這項(xiàng)工作。例如使套,如果您在您的網(wǎng)頁瀏覽器中打開控制臺尽纽,就可以輕松將時(shí)間重置為一個(gè)JavaScript Date對象。

new Date(1392321600 * 1000)
// => Thu Feb 13 2014 14:00:00 GMT-0600 (CST)

一旦你超出限流童漩,你會收到一個(gè)錯(cuò)誤響應(yīng):

HTTP/1.1 429 Too Many Requests
Status: 429 Too Many Requests
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1392321600

{ "message" : "API rate limit exceeded." }

保持限流(Staying within the rate limit)

如果你超出你的限流上限,你可以通過緩存API的響應(yīng)來解決問題春锋。如果你已經(jīng)緩存矫膨,但仍然超出你的限流上限,請與我們聯(lián)系期奔,來為您的OAuth應(yīng)用申請更高的限流上限侧馅。

條件請求(Conditional requests)

大多數(shù)響應(yīng)都返回ETag報(bào)頭。許多響應(yīng)也會返回一個(gè)Last-Modified報(bào)頭呐萌。你可以使用這些報(bào)頭值(Header Value)來讓使用了If-None-MatchIf-Modified-Since報(bào)頭的后續(xù)請求去請求這些資源馁痴。如果資源沒有改變,服務(wù)器將返回一個(gè)304 Not Modified肺孤。

$ curl -i https://api.dribbble.com/v1/users/simplebits
HTTP/1.1 200 OK
ETag: "e612e16d3c4d113573edb015d8eac1d5"
Status: 200 OK
Last-Modified: Sat, 22 Feb 2014 17:10:33 GMT
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1392321600

$ curl -i https://api.dribbble.com/v1/users/simplebits -H 'If-None-Match: "e612e16d3c4d113573edb015d8eac1d5"'
HTTP/1.1 304 Not Modified
ETag: "e612e16d3c4d113573edb015d8eac1d5"
Status: 200 OK
Last-Modified: Sat, 22 Feb 2014 17:10:33 GMT
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1392321600

$ curl -i https://api.dribbble.com/v1/users/simplebits -H "If-Modified-Since: Sat, 22 Feb 2014 17:10:33 GMT"
HTTP/1.1 304 Not Modified
ETag: "e612e16d3c4d113573edb015d8eac1d5"
Status: 200 OK
Last-Modified: Sat, 22 Feb 2014 17:10:33 GMT
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1392321600

跨源資源共享(Cross Origin Resource Sharing)

本API對Ajax請求支持跨資源共享(CORS)罗晕。你可以閱讀 CORS W3C working draft, 或者HTML5安全指南的 這個(gè)簡介济欢。

下面是從瀏覽器點(diǎn)擊http://example.com發(fā)送請求的示例:

$ curl -i https://api.dribbble.com/v1/users/simplebits -H "Origin: http://example.com"
HTTP/1.1 200 OK
Access-Control-Allow-Origin: http://example.com
Access-Control-Expose-Headers: ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
Access-Control-Allow-Credentials: true

CORS的預(yù)請求(preflight request)看起來是這樣的:

$ curl -i https://api.dribbble.com/v1/users/simplebits -X OPTIONS -H "Origin: http://example.com" -H "Access-Control-Request-Method: GET"
HTTP/1.1 200 OK
Access-Control-Allow-Origin: http://example.com
Access-Control-Allow-Methods: OPTIONS, GET
Access-Control-Expose-Headers: ETag, Link, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
Access-Control-Max-Age: 86400
Access-Control-Allow-Credentials: true

JSON-P回調(diào)(JSON-P Callbacks)

擴(kuò)展閱讀: JSON-Pwikipedia

你可以發(fā)送一個(gè)回調(diào)參數(shù)給任何GET調(diào)用來獲得包裹在一個(gè)JSON函數(shù)的結(jié)果。這通常是瀏覽器避過跨域問題想要在網(wǎng)頁中嵌入內(nèi)容時(shí)被使用的小渊。響應(yīng)包括和常規(guī)API相同的數(shù)據(jù)輸出法褥,外加HTTP頭的相關(guān)信息。

$ curl "https://api.dribbble.com?callback=bar"

bar({
  "meta" : {
    "status" : 200,
    "X-RateLimit-Limit" : 60,
    "X-RateLimit-Remaining" : 59,
    "X-RateLimit-Reset" : 1392321600,
    "Link" : [
      ["https://api.dribbble.com?page=2", { "rel" : "next" }]
    ]
  },
  "data" : {
    // ...
  }
})

你可以寫一個(gè)JavaScript處理程序來處理這樣的回調(diào):

function bar(response) {
  var meta = response.meta
  var data = response.data

  console.log(meta)
  console.log(data)
}

HTTP報(bào)頭中所有的頭(header)都是字符串類型酬屉,只有一個(gè)值得注意的例外:鏈路(Link)半等。鏈路報(bào)頭(Link Header)為你預(yù)解析為[url, options]元組數(shù)組。

一個(gè)看起來像這樣的鏈接:

Link: <url1>; rel="next", <url2>; rel="foo"; bar="baz"

… 它的回調(diào)輸出看起來是這樣的:

{
  "Link" : [
    [
      "url1",
      {
        "rel" : "next"
      }
    ],
    [
      "url2",
      {
        "rel" : "foo",
        "bar" : "baz"
      }
    ]
  ]
}

媒體類型(Media Types)

自定義媒體類型用來讓消費(fèi)者在API中選擇他們希望收到的數(shù)據(jù)格式呐萨。當(dāng)你發(fā)起請求杀饵,這是根據(jù)向Accept報(bào)頭添加下列任一類型來完成的。資源對媒體類型處理得很特別谬擦,能夠獨(dú)立地改變和支持他們的格式切距,對其他的資源則不這樣。

當(dāng)前版本支持且只支持v1怯屉,但未來可能會改變蔚舀。所有Dribbble的媒體類型看起來是這樣的:

application/vnd.dribbble.v1.param+json

評論正文屬性(Comment Body Property)

評論正文可使用HTML編寫,例如鏈接锨络,并可以包含自動鏈接(auto-linked)的URL和用戶名提及(username mentions)赌躺。

HTML

返回HTML從包含了自動鏈接(auto-linked)的URL和用戶名提及(username mentions)的正文呈現(xiàn)∠鄱回應(yīng)將包含一個(gè)body屬性礼患。如果你沒傳過任何特定的媒體類型,這就是默認(rèn)值掠归。

application/vnd.dribbble.v1.html+json

Text

當(dāng)用戶正在編輯評論時(shí)缅叠,返回一個(gè)顯示在文本區(qū)域、大多是文本形式的正文虏冻。它就可能包含一些用戶自己寫的HTML代碼肤粱,但自動鏈接(auto-linked)或提及(mentions)鏈接將被不包括在內(nèi)。響應(yīng)將包括一個(gè)body_text屬性厨相。

application/vnd.dribbble.v1.text+json

快照描述屬性(Shot Description Property)

我不知道怎么翻譯Shot领曼,可能是“快照”。

快照描述可使用HTML編寫蛮穿,比如鏈接庶骄,并可以包括自動鏈接(auto-linked)的URL和用戶名提及(username mentions)。該屬性和評論正文屬性除了名稱其它都是一樣的践磅。

HTML

返回HTML從包含了自動鏈接(auto-linked)的URL和用戶名提及(username mentions)的描述呈現(xiàn)单刁。回應(yīng)將包含一個(gè)description屬性府适。如果你沒傳過任何特定的媒體類型羔飞,這就是默認(rèn)值肺樟。

application/vnd.dribbble.v1.html+json

Text

當(dāng)用戶正在編輯描述時(shí),返回一個(gè)顯示在文本區(qū)域褥傍、大多是文本形式的描述儡嘶。它就可能包含一些用戶自己寫的HTML代碼,但自動鏈接(auto-linked)或提及(mentions)鏈接將被不包括在內(nèi)恍风。響應(yīng)將包括一個(gè)description_text屬性蹦狂。

application/vnd.dribbble.v1.text+json

開放授權(quán)(OAuth)

OAuth2是一種協(xié)議,允許外部應(yīng)用請求授權(quán)獲得用戶在Dribbble帳戶內(nèi)除密碼外的私人信息朋贬。這比基本認(rèn)證更優(yōu)秀凯楔,因?yàn)榱钆瓶梢员幌拗茷樘囟愋偷臄?shù)據(jù),并且用戶可以隨時(shí)撤銷它锦募。

所有開發(fā)者需要在開始之前注冊他們的應(yīng)用摆屯。已注冊的OAuth的應(yīng)用分配一個(gè)唯一的客戶端ID(clientID)和客戶端密鑰(client secret)。不要向別人分享你的客戶端密鑰(client secret)糠亩。

Web應(yīng)用流(Web Application Flow)

1. 重定向用戶請求訪問Dribbble
GET https://dribbble.com/oauth/authorize

參數(shù)

Name Type Description
client_id string 必須虐骑。 你注冊時(shí)即可獲得一個(gè)客戶端ID。
redirect_uri string 用戶授權(quán)之后會轉(zhuǎn)到這個(gè)URL赎线。 詳情請見: 重定向URL廷没。
scope string 使用空格進(jìn)行分隔的列表。如果沒有提供垂寥,域默認(rèn)為向那些不具有有效應(yīng)用令牌的用戶提供公開域颠黎。對于已經(jīng)擁有該應(yīng)用有效令牌的用戶,用戶將不會顯示帶有域列表的授權(quán)頁面滞项。取而代之的是狭归,流(flow)這步驟將自動和該被用戶在用戶最后一次完成的流(flow)的同一個(gè)的域內(nèi)完成。
state string 一個(gè)難以猜測的隨機(jī)字符串文判。用于防止跨站請求偽造攻擊过椎。
2. Dribbble重定向回你的網(wǎng)站

Dribbble重定向回您的網(wǎng)站在code參數(shù)臨時(shí)代碼,以及你在上一步中state參數(shù)中提供的狀態(tài)戏仓。如果狀態(tài)不匹配潭流,則已經(jīng)由第三方和進(jìn)程創(chuàng)建的請求應(yīng)該被中止。

交換(Exchange)這個(gè)來獲取訪問令牌:

POST https://dribbble.com/oauth/token

參數(shù)

Name Type Description
client_id string 必須柜去。 你注冊時(shí)即可獲得一個(gè)客戶端ID。
client_secret string 必須拆宛。 你注冊時(shí)即可獲得一個(gè)客戶端密鑰嗓奢。
code string 必須。 你在第1步的響應(yīng)里會獲得code浑厚。
redirect_uri string 用戶授權(quán)之后會轉(zhuǎn)到這個(gè)URL股耽。 詳情請見: 重定向URL根盒。

響應(yīng)

響應(yīng)將返回為以下格式的JSON:

{
  "access_token" : "29ed478ab86c07f1c069b1af76088f7431396b7c4a2523d06911345da82224a0",
  "token_type" : "bearer",
  "scope" : "public write"
}
3. 用訪問令牌來訪問API

訪問令牌允許您代表用戶請求API。

GET https://api.dribbble.com/v1/user?access_token=...

你可以傳遞如上所示的令牌中的查詢參數(shù)物蝙,但更干凈的做法是將其包含在Authorization標(biāo)頭中:

Authorization: Bearer ACCESS_TOKEN

舉個(gè)栗子炎滞,在curl中你可以像這樣設(shè)置Authorization標(biāo)頭:

curl -H "Authorization: Bearer ACCESS_TOKEN" https://api.dribbble.com/v1/user

客戶端流(Client Flow)

應(yīng)用提供了可用于對一個(gè)服務(wù)器實(shí)現(xiàn)或公共JavaScript客戶端的只讀訪問令牌。請注意诬乞,訪問令牌依然受制于限流册赛。

使用Web訪問令牌一樣使用本訪問令牌。

非Web應(yīng)用流(Non-Web Application Flow)

我們目前不支持OAuth的以外的任何其他身份驗(yàn)證方法震嫉。如果你只需要只讀訪問的話森瘪,試試客戶端流

重定向URL(Redirect URLs)

redirect_uri是可選參數(shù)票堵。如果忽略該參數(shù)扼睬,Dribbble將用戶重定向到在OAuth應(yīng)用設(shè)置中配置的回調(diào)URL。如果提供該參數(shù)悴势,重定向URL的主機(jī)和端口必須與回調(diào)URL相匹配窗宇。重定向URL路徑必須引用回調(diào)URL的子目錄。

CALLBACK: http://example.com/path

GOOD: http://example.com/path
GOOD: http://example.com/path/subdir/other
GOOD: myapplication://phone-callback
BAD:  http://example.com/
BAD:  http://example.com/bar
BAD:  http://example.com:8080/path
BAD:  http://oauth.example.com:8080/path
BAD:  http://example.org
BAD:  ssh://example.com

域(Scopes)

作用域讓你指定正是你需要什么類型的訪問特纤。范圍限制的OAuth令牌訪問军俊。他們不授予超出其用戶已經(jīng)有任何額外的許可。

對于Web流叫潦,請求作用域?qū)⒈伙@示到用戶的授權(quán)表單上蝇完。

Name Description
public 授予只讀公共信息訪問。
如果沒提供域矗蕊,這就是默認(rèn)域短蜕。
write 授予用戶資源的寫權(quán)限,除評論(comment)和快照(shot)傻咖。
comment 授予創(chuàng)建朋魔,更新和刪除評論的完全訪問權(quán)限。
upload 授予創(chuàng)建卿操,更新和刪除照片和附件的完全訪問權(quán)限警检。

您的應(yīng)用可以在初始重定向中請求域(scopes)。您可以用空格分隔它們來指定多個(gè)域:

https://dribbble.com/oauth/authorize?
  client_id=...&
  scope=public+write

認(rèn)證請求常見錯(cuò)誤(Common errors for the authorization request)

有幾件事情會在為用戶獲取OAuth令牌的過程中可能會出錯(cuò)害淤。在初始授權(quán)請求階段扇雕,這些都是一些你可能會看到錯(cuò)誤:

應(yīng)用掛起(Application Suspended)

如果你設(shè)置的OAuth應(yīng)用被掛起(由于濫用匯報(bào),垃圾郵件或API的不當(dāng)使用)窥摄,Dribbble將重定向到使用以下包含參數(shù)錯(cuò)誤總結(jié)的已注冊過的回調(diào)URL:

http://your-application.com/callback?error=application_suspended
  &error_description=Your+application+has+been+suspended.
  &state=xyz

聯(lián)系技術(shù)支持來解決被掛起的應(yīng)用的問題镶奉。

重定向URI不匹配(Redirect URI Mismatch)1

如果你提供了一個(gè)和你的應(yīng)用注冊不匹配的redirect_uri,Dribbble將重定向到使用以下包含參數(shù)錯(cuò)誤總結(jié)的已注冊過的回調(diào)URL:

http://your-application.com/callback?error=invalid_redirect_uri
  &error_description=The+redirect+uri+included+is+not+valid.
  &state=xyz

要糾正這個(gè)錯(cuò)誤,要么提供一個(gè)與你注冊過的相匹配的redirect_uri哨苛,要么略去這個(gè)參數(shù)來使用你的應(yīng)用程序注冊的默認(rèn)值鸽凶。

拒絕訪問(Access Denied)

如果用戶拒絕訪問你的應(yīng)用,ribbble將重定向到使用以下包含參數(shù)錯(cuò)誤總結(jié)的已注冊過的回調(diào)URL:

http://your-application.com/callback?error=access_denied
  &error_description=The+resource+owner+or+authorization+server+denied+the+request.
  &state=xyz

你除了嗶狗你什么都干不了建峭,因?yàn)橛脩?del>就是爹用不用你的應(yīng)用是他的自由玻侥。通常情況下,用戶就是要關(guān)閉窗口或按自己的瀏覽器的后退鍵怎么著啊你打我啊亿蒸,所以看起來你可能永遠(yuǎn)都看不到這個(gè)錯(cuò)誤凑兰。

訪問令牌請求常見錯(cuò)誤(Common errors for the access token request)

在一個(gè)交換訪問令牌代碼的第二階段,還有另外一組可能出現(xiàn)的錯(cuò)誤祝懂。

不正確的客戶端憑證(Incorrect Client Credentials)

如果client_id和/或client_secret傳遞不正確票摇,您將收到此錯(cuò)誤響應(yīng)。

{
  "error" : "invalid_client",
  "error_description" : "Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method."
}

為了解決這個(gè)錯(cuò)誤砚蓬,回溯并確保你有你的OAuth應(yīng)用正確的憑證矢门。仔細(xì)檢查client_idclient_secret以確保它們是正確的,并且被正確的傳遞到Dribbble灰蛙。

重定向URI不匹配(Redirect URI Mismatch)2

如果你提供了一個(gè)和你的應(yīng)用注冊不匹配的redirect_uri祟剔,Dribbble將重定向到使用以下包含參數(shù)錯(cuò)誤總結(jié)的已注冊過的回調(diào)URL:

{
  "error" : "invalid_grant",
  "error_description" : "The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client."
}

要糾正這個(gè)錯(cuò)誤,要么提供一個(gè)與你注冊過的相匹配的redirect_uri摩梧,要么略去這個(gè)參數(shù)來使用你的應(yīng)用程序注冊的默認(rèn)值物延。

錯(cuò)誤的驗(yàn)證碼(Bad Verification Code)

如果你傳的驗(yàn)證碼不正確、過期了或不匹配你在身份驗(yàn)證請求的第一階段獲得的驗(yàn)證碼仅父,您將會收到此錯(cuò)誤叛薯。

{
  "error" : "invalid_grant",
  "error_description" : "The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client."
}

為了解決這個(gè)錯(cuò)誤,重新開始OAuth流程來得到一個(gè)新的代碼笙纤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末耗溜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子省容,更是在濱河造成了極大的恐慌抖拴,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腥椒,死亡現(xiàn)場離奇詭異阿宅,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)笼蛛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進(jìn)店門洒放,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人滨砍,你說我怎么就攤上這事拉馋≌ノ” “怎么了?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵煌茴,是天一觀的道長。 經(jīng)常有香客問我日川,道長蔓腐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任龄句,我火速辦了婚禮回论,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘分歇。我一直安慰自己傀蓉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布职抡。 她就那樣靜靜地躺著葬燎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缚甩。 梳的紋絲不亂的頭發(fā)上谱净,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天,我揣著相機(jī)與錄音擅威,去河邊找鬼壕探。 笑死,一個(gè)胖子當(dāng)著我的面吹牛郊丛,可吹牛的內(nèi)容都是我干的李请。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼厉熟,長吁一口氣:“原來是場噩夢啊……” “哼导盅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起庆猫,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤认轨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后月培,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘁字,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年杉畜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了纪蜒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,683評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡此叠,死狀恐怖纯续,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤猬错,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布窗看,位于F島的核電站,受9級特大地震影響倦炒,放射性物質(zhì)發(fā)生泄漏显沈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一逢唤、第九天 我趴在偏房一處隱蔽的房頂上張望拉讯。 院中可真熱鬧,春花似錦鳖藕、人聲如沸魔慷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽院尔。三九已至,卻和暖如春页滚,著一層夾襖步出監(jiān)牢的瞬間召边,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工裹驰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留隧熙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓幻林,卻偏偏與公主長得像贞盯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子沪饺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評論 2 349

推薦閱讀更多精彩內(nèi)容