從我自己的實驗,這似乎按預期方式工作:
>>> import github3
>>> u = github3.user('sigmavirus24')
>>> u
<User [sigmavirus24:Ian Cordasco]>
>>> i = u.iter_starred()
>>> i
<GitHubIterator [-1, /users/sigmavirus24/starred]>
>>> next(i)
<Repository [functional-koans/clojure-koans]>
>>> i.etag
'"1aeaaa7a249610c52ba0363009afcab9"'
>>> next(u.iter_starred(etag=i.etag))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "github3/structs.py", line 103, in next
return self.__next__()
File "github3/structs.py", line 90, in __next__
return next(self.__i__)
StopIteration
的區別我們的例子中之間是你的ETAG值是'97ba89b5c009e5530f108a06606f3e2c'
,其中作爲等同於我的是'"97ba89b5c009e5530f108a06606f3e2c"'
。由於該值被放置在頭我認爲頭是很重要的:
If-None-Match: "97ba89b5c009e5530f108a06606f3e2c"
相反的:
If-None-Match: 97ba89b5c009e5530f108a06606f3e2c
這就是你會送。
而我只是檢查,那是什麼錯誤。圖書館按預期工作。你傳遞etag值的方式是錯誤的。它需要在該值附近有雙引號(例如,'"97ba89b5c009e5530f108a06606f3e2c"'
)才能正常工作。
我不明白。你說我們需要傳遞類似於這個格式的etag:''「97ba89b5」''但這正是'i.etag'中包含的內容,所以爲什麼當它作爲參數傳遞時會拋出錯誤?u .iter_starred(etag = i.etag)'而不是'u.iter_starred(etag =''97ba89b5'')'?他們應該是完全一樣的 – Leonardo
順便說一句,他們都沒有爲我工作,如果我通過'i.etag'我得到一個類似於你有一個錯誤。如果我傳遞一個字符串類似於這個「'」「97ba89b5」''我每次都用新的etag取回資源 – Leonardo
錯誤是預期的行爲。這意味着請求已完成,並且不會返回任何內容。如果我去了一個新的存儲庫,那麼它只會返回那個存儲庫。 –