Github 잔디를 얻고 서비스에 표시
개요
이 기사 에서 실패했기 때문에 리벤지.
무슨 느낌?
소스 코드
vue 파일은 다음과 같습니다.
App.vue<template>
<div>
<input type="text" v-model="msg" >
<button @click="getGarden()">get the garden!</button>
<p v-if="msg.length > 0 && svg.length > 0">
user: {{msg}}
<br/>
<span v-html="svg"></span>
</p>
</div>
</template>
<script>
export default {
data() {
return {
msg: 'longtime1116',
svg: '',
};
},
methods: {
getGarden() {
const XHR = new XMLHttpRequest();
const query = `http://localhost:8081/getGarden.php?url=https://github.com/users/${this.msg}/contributions`;
XHR.open('GET', query, true);
XHR.onreadystatechange = (() => {
if (XHR.status === 200) {
this.svg = XHR.responseText;
}
});
XHR.send(null);
},
},
};
</script>
다음 php를 php -S localhost:8081
로 시작하십시오.
getGarden.php<?php
//$data = file_get_contents("https://github.com/users/longtime1116/contributions");
$data = file_get_contents($_GET['url']);
header("Access-Control-Allow-Origin: *");
header("Content-Type: text/plain");
print $data;
해설
vue.js 측면
axios 나 fetch 로 php 서버로부터의 응답을 취득하면(자), ReadableStream 형으로 response 가 돌아와서 처리가 번거롭기 때문에, XMLHttpRequest 를 사용했습니다.
(왜 XMLHttoRequest라면 잘 작동하는지 지금은 잘 모르겠다.
또, 취득한 캐릭터 라인을 javascript 측에서 SVG 로서 전개하기 위해서, 템플릿 구문 를 사용하고 있습니다.
PHP측
CORS 대책으로서, 사이에 1장 PHP 서버를 걸게 하고 있습니다.
PHP 쪽으로 Access-Control-Allow-Origin
를 부여하고 있는 것이 그것입니다.
기타 메모
가변 이름에는 개선의 여지가 있다.
URL 그대로가 아니라 user_name 만 php에 전달하도록하는 것이 좋다.
Github 리포지토리
Reference
이 문제에 관하여(Github 잔디를 얻고 서비스에 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/longtime1116/items/8fa82d182c7863ca24f1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
소스 코드
vue 파일은 다음과 같습니다.
App.vue<template>
<div>
<input type="text" v-model="msg" >
<button @click="getGarden()">get the garden!</button>
<p v-if="msg.length > 0 && svg.length > 0">
user: {{msg}}
<br/>
<span v-html="svg"></span>
</p>
</div>
</template>
<script>
export default {
data() {
return {
msg: 'longtime1116',
svg: '',
};
},
methods: {
getGarden() {
const XHR = new XMLHttpRequest();
const query = `http://localhost:8081/getGarden.php?url=https://github.com/users/${this.msg}/contributions`;
XHR.open('GET', query, true);
XHR.onreadystatechange = (() => {
if (XHR.status === 200) {
this.svg = XHR.responseText;
}
});
XHR.send(null);
},
},
};
</script>
다음 php를 php -S localhost:8081
로 시작하십시오.
getGarden.php<?php
//$data = file_get_contents("https://github.com/users/longtime1116/contributions");
$data = file_get_contents($_GET['url']);
header("Access-Control-Allow-Origin: *");
header("Content-Type: text/plain");
print $data;
해설
vue.js 측면
axios 나 fetch 로 php 서버로부터의 응답을 취득하면(자), ReadableStream 형으로 response 가 돌아와서 처리가 번거롭기 때문에, XMLHttpRequest 를 사용했습니다.
(왜 XMLHttoRequest라면 잘 작동하는지 지금은 잘 모르겠다.
또, 취득한 캐릭터 라인을 javascript 측에서 SVG 로서 전개하기 위해서, 템플릿 구문 를 사용하고 있습니다.
PHP측
CORS 대책으로서, 사이에 1장 PHP 서버를 걸게 하고 있습니다.
PHP 쪽으로 Access-Control-Allow-Origin
를 부여하고 있는 것이 그것입니다.
기타 메모
가변 이름에는 개선의 여지가 있다.
URL 그대로가 아니라 user_name 만 php에 전달하도록하는 것이 좋다.
Github 리포지토리
Reference
이 문제에 관하여(Github 잔디를 얻고 서비스에 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/longtime1116/items/8fa82d182c7863ca24f1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<template>
<div>
<input type="text" v-model="msg" >
<button @click="getGarden()">get the garden!</button>
<p v-if="msg.length > 0 && svg.length > 0">
user: {{msg}}
<br/>
<span v-html="svg"></span>
</p>
</div>
</template>
<script>
export default {
data() {
return {
msg: 'longtime1116',
svg: '',
};
},
methods: {
getGarden() {
const XHR = new XMLHttpRequest();
const query = `http://localhost:8081/getGarden.php?url=https://github.com/users/${this.msg}/contributions`;
XHR.open('GET', query, true);
XHR.onreadystatechange = (() => {
if (XHR.status === 200) {
this.svg = XHR.responseText;
}
});
XHR.send(null);
},
},
};
</script>
<?php
//$data = file_get_contents("https://github.com/users/longtime1116/contributions");
$data = file_get_contents($_GET['url']);
header("Access-Control-Allow-Origin: *");
header("Content-Type: text/plain");
print $data;
vue.js 측면
axios 나 fetch 로 php 서버로부터의 응답을 취득하면(자), ReadableStream 형으로 response 가 돌아와서 처리가 번거롭기 때문에, XMLHttpRequest 를 사용했습니다.
(왜 XMLHttoRequest라면 잘 작동하는지 지금은 잘 모르겠다.
또, 취득한 캐릭터 라인을 javascript 측에서 SVG 로서 전개하기 위해서, 템플릿 구문 를 사용하고 있습니다.
PHP측
CORS 대책으로서, 사이에 1장 PHP 서버를 걸게 하고 있습니다.
PHP 쪽으로
Access-Control-Allow-Origin
를 부여하고 있는 것이 그것입니다.기타 메모
가변 이름에는 개선의 여지가 있다.
URL 그대로가 아니라 user_name 만 php에 전달하도록하는 것이 좋다.
Github 리포지토리
Reference
이 문제에 관하여(Github 잔디를 얻고 서비스에 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/longtime1116/items/8fa82d182c7863ca24f1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Github 잔디를 얻고 서비스에 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/longtime1116/items/8fa82d182c7863ca24f1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)