如何获取最新提交日期 - Github API
How to get latest commit date - Github API
我目前正在编写一个包含 git 个代表的小型数据库,我想知道如果我的数据库中列出了代表,我将如何继续并获取最新提交的日期。
我从来没有使用过 github API,我很难理解它。
如果有人能帮我解决这个问题,我将不胜感激。 PHP 或 JS 最好,因为我发现的所有示例都在 ruby.
中
如果您要像 your example, I'd use cURL
instead of file_get_contents
, as you'd need to configure allow-url-fopen 那样使用 PHP。
GitHub还需要你在header中发送一个user-agent
:https://developer.github.com/v3/#user-agent-required
例如,您的 PHP 代码如下所示;
$objCurl = curl_init();
//The repo we want to get
curl_setopt($objCurl, CURLOPT_URL, "https://api.github.com/repos/google/blueprint/commits");
//To comply with https://developer.github.com/v3/#user-agent-required
curl_setopt($objCurl, CURLOPT_USERAGENT, "Whosebug-29845346");
//Skip verification (kinda insecure)
curl_setopt($objCurl, CURLOPT_SSL_VERIFYPEER, false);
//Get the response
$response = curl_exec($objCurl);
print_r( json_decode($response, true) );
注意:您将可以继续使用file_get_contents
并发送user-agent
header。参见 this answer
老问题,但我想指出(至少在 api v3 中)您可以使用分支 api 来获取特定分支的最新提交日期。我假设你对 master 感兴趣。
看起来像:
https://api.github.com/repos/:owner/:repo/branches/master
我想准确地回答这个问题,所以我做了一个非常小的演示,演示如何获取最新提交的日期。
输出:
ta-dachi
master
2019-03-21T14:50:22Z <----- What you want
b80126c3ea900cd7c92729e652b2e8214ff014d8
https://github.com/ta-dachi/eatsleepcode.tech/tree/master
index.html
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>React Local</title>
<script
type="application/javascript"
src="https://unpkg.com/react@16.0.0/umd/react.production.min.js"
></script>
<script
type="application/javascript"
src="https://unpkg.com/react-dom@16.0.0/umd/react-dom.production.min.js"
></script>
<script
type="application/javascript"
src="https://unpkg.com/@babel/standalone/babel.min.js"
></script>
<script
type="application/javascript"
src="https://unpkg.com/whatwg-fetch@3.0.0/dist/fetch.umd.js"
></script>
</head>
<body>
<div id="root"></div>
<script type="text/jsx" src="index.jsx"></script>
</body>
index.jsx
/**
* See https://developer.github.com/v3/repos/branches/#get-branch
*
* Example Github api request:
* https://api.github.com/repos/ta-dachi/eatsleepcode.tech/branches/master
*/
class LatestCommitComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
author: "",
branch: "",
date: "",
sha: "",
link: ""
};
}
componentDidMount() {
// Replace this with your own repo
// https://api.github.com/repos/:owner/:repo/branches/master
fetch(
"https://api.github.com/repos/ta-dachi/eatsleepcode.tech/branches/master"
)
.then(response => {
response.json().then(json => {
console.log(json);
this.setState({
author: json.commit.author.login,
branch: json.name,
date: json.commit.commit.author.date,
sha: json.commit.sha,
link: json._links.html
});
});
})
.catch(error => {
console.log(error);
});
}
render() {
return (
<div>
<div>{this.state.author}</div>
<div>{this.state.branch}</div>
<div>{this.state.date}</div>
<div>{this.state.sha}</div>
<div>{this.state.link}</div>
</div>
);
}
}
ReactDOM.render(<LatestCommitComponent />, document.getElementById("root"));
我目前正在编写一个包含 git 个代表的小型数据库,我想知道如果我的数据库中列出了代表,我将如何继续并获取最新提交的日期。
我从来没有使用过 github API,我很难理解它。
如果有人能帮我解决这个问题,我将不胜感激。 PHP 或 JS 最好,因为我发现的所有示例都在 ruby.
中如果您要像 your example, I'd use cURL
instead of file_get_contents
, as you'd need to configure allow-url-fopen 那样使用 PHP。
GitHub还需要你在header中发送一个user-agent
:https://developer.github.com/v3/#user-agent-required
例如,您的 PHP 代码如下所示;
$objCurl = curl_init();
//The repo we want to get
curl_setopt($objCurl, CURLOPT_URL, "https://api.github.com/repos/google/blueprint/commits");
//To comply with https://developer.github.com/v3/#user-agent-required
curl_setopt($objCurl, CURLOPT_USERAGENT, "Whosebug-29845346");
//Skip verification (kinda insecure)
curl_setopt($objCurl, CURLOPT_SSL_VERIFYPEER, false);
//Get the response
$response = curl_exec($objCurl);
print_r( json_decode($response, true) );
注意:您将可以继续使用file_get_contents
并发送user-agent
header。参见 this answer
老问题,但我想指出(至少在 api v3 中)您可以使用分支 api 来获取特定分支的最新提交日期。我假设你对 master 感兴趣。
看起来像:
https://api.github.com/repos/:owner/:repo/branches/master
我想准确地回答这个问题,所以我做了一个非常小的演示,演示如何获取最新提交的日期。
输出:
ta-dachi
master
2019-03-21T14:50:22Z <----- What you want
b80126c3ea900cd7c92729e652b2e8214ff014d8
https://github.com/ta-dachi/eatsleepcode.tech/tree/master
index.html
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>React Local</title>
<script
type="application/javascript"
src="https://unpkg.com/react@16.0.0/umd/react.production.min.js"
></script>
<script
type="application/javascript"
src="https://unpkg.com/react-dom@16.0.0/umd/react-dom.production.min.js"
></script>
<script
type="application/javascript"
src="https://unpkg.com/@babel/standalone/babel.min.js"
></script>
<script
type="application/javascript"
src="https://unpkg.com/whatwg-fetch@3.0.0/dist/fetch.umd.js"
></script>
</head>
<body>
<div id="root"></div>
<script type="text/jsx" src="index.jsx"></script>
</body>
index.jsx
/**
* See https://developer.github.com/v3/repos/branches/#get-branch
*
* Example Github api request:
* https://api.github.com/repos/ta-dachi/eatsleepcode.tech/branches/master
*/
class LatestCommitComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
author: "",
branch: "",
date: "",
sha: "",
link: ""
};
}
componentDidMount() {
// Replace this with your own repo
// https://api.github.com/repos/:owner/:repo/branches/master
fetch(
"https://api.github.com/repos/ta-dachi/eatsleepcode.tech/branches/master"
)
.then(response => {
response.json().then(json => {
console.log(json);
this.setState({
author: json.commit.author.login,
branch: json.name,
date: json.commit.commit.author.date,
sha: json.commit.sha,
link: json._links.html
});
});
})
.catch(error => {
console.log(error);
});
}
render() {
return (
<div>
<div>{this.state.author}</div>
<div>{this.state.branch}</div>
<div>{this.state.date}</div>
<div>{this.state.sha}</div>
<div>{this.state.link}</div>
</div>
);
}
}
ReactDOM.render(<LatestCommitComponent />, document.getElementById("root"));