Merge pull request #211 from breno-pereira/master
bug: keeping information on page change
This commit is contained in:
190
pages/index.vue
190
pages/index.vue
@@ -43,7 +43,7 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<label for="method">Method</label>
|
<label for="method">Method</label>
|
||||||
<select id="method" v-model="method">
|
<select id="method" v-model="method" @change="methodChange">
|
||||||
<option>GET</option>
|
<option>GET</option>
|
||||||
<option>HEAD</option>
|
<option>HEAD</option>
|
||||||
<option>POST</option>
|
<option>POST</option>
|
||||||
@@ -130,20 +130,22 @@
|
|||||||
</ul>
|
</ul>
|
||||||
<ul v-for="(param, index) in bodyParams" :key="index">
|
<ul v-for="(param, index) in bodyParams" :key="index">
|
||||||
<li>
|
<li>
|
||||||
<input
|
<input
|
||||||
:placeholder="'key '+(index+1)"
|
:placeholder="'key '+(index+1)"
|
||||||
:name="'bparam'+index"
|
:name="'bparam'+index"
|
||||||
v-model="param.key"
|
:value="param.key"
|
||||||
@keyup.prevent="setRouteQueryState"
|
@change="$store.commit('setKeyBodyParams', { index, value: $event.target.value })"
|
||||||
|
@keyup.prevent="setRouteQueryState"
|
||||||
autofocus
|
autofocus
|
||||||
/>
|
/>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<input
|
<input
|
||||||
:placeholder="'value '+(index+1)"
|
:placeholder="'value '+(index+1)"
|
||||||
:id="'bvalue'+index"
|
:id="'bvalue'+index"
|
||||||
:name="'bvalue'+index"
|
:name="'bvalue'+index"
|
||||||
v-model="param.value"
|
:value="param.value"
|
||||||
|
@change="$store.commit('setValueBodyParams', { index, value: $event.target.value })"
|
||||||
@keyup.prevent="setRouteQueryState"
|
@keyup.prevent="setRouteQueryState"
|
||||||
/>
|
/>
|
||||||
</li>
|
</li>
|
||||||
@@ -355,19 +357,21 @@
|
|||||||
</ul>
|
</ul>
|
||||||
<ul v-for="(header, index) in headers" :key="index">
|
<ul v-for="(header, index) in headers" :key="index">
|
||||||
<li>
|
<li>
|
||||||
<input
|
<input
|
||||||
:placeholder="'header '+(index+1)"
|
:placeholder="'header '+(index+1)"
|
||||||
:name="'header'+index"
|
:name="'header'+index"
|
||||||
v-model="header.key"
|
:value="header.key"
|
||||||
@keyup.prevent="setRouteQueryState"
|
@change="$store.commit('setKeyHeader', { index, value: $event.target.value })"
|
||||||
|
@keyup.prevent="setRouteQueryState"
|
||||||
autofocus
|
autofocus
|
||||||
/>
|
/>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<input
|
<input
|
||||||
:placeholder="'value '+(index+1)"
|
:placeholder="'value '+(index+1)"
|
||||||
:name="'value'+index"
|
:name="'value'+index"
|
||||||
v-model="header.value"
|
:value="header.value"
|
||||||
|
@change="$store.commit('setValueHeader', { index, value: $event.target.value })"
|
||||||
@keyup.prevent="setRouteQueryState"
|
@keyup.prevent="setRouteQueryState"
|
||||||
/>
|
/>
|
||||||
</li>
|
</li>
|
||||||
@@ -416,15 +420,21 @@
|
|||||||
</ul>
|
</ul>
|
||||||
<ul v-for="(param, index) in params" :key="index">
|
<ul v-for="(param, index) in params" :key="index">
|
||||||
<li>
|
<li>
|
||||||
<input
|
<input
|
||||||
:placeholder="'parameter '+(index+1)"
|
:placeholder="'parameter '+(index+1)"
|
||||||
:name="'param'+index"
|
:name="'param'+index"
|
||||||
v-model="param.key"
|
:value="param.key"
|
||||||
|
@change="$store.commit('setKeyParams', { index, value: $event.target.value })"
|
||||||
autofocus
|
autofocus
|
||||||
/>
|
/>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<input :placeholder="'value '+(index+1)" :name="'value'+index" v-model="param.value" />
|
<input
|
||||||
|
:placeholder="'value '+(index+1)"
|
||||||
|
:name="'value'+index"
|
||||||
|
:value="param.value"
|
||||||
|
@change="$store.commit('setValueParams', { index, value: $event.target.value })"
|
||||||
|
/>
|
||||||
</li>
|
</li>
|
||||||
<div>
|
<div>
|
||||||
<li>
|
<li>
|
||||||
@@ -597,25 +607,9 @@ export default {
|
|||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
label: "",
|
|
||||||
showModal: false,
|
showModal: false,
|
||||||
copyButton: '<i class="material-icons">file_copy</i>',
|
copyButton: '<i class="material-icons">file_copy</i>',
|
||||||
copiedButton: '<i class="material-icons">done</i>',
|
copiedButton: '<i class="material-icons">done</i>',
|
||||||
method: "GET",
|
|
||||||
url: "https://reqres.in",
|
|
||||||
auth: "None",
|
|
||||||
path: "/api/users",
|
|
||||||
httpUser: "",
|
|
||||||
httpPassword: "",
|
|
||||||
passwordFieldType: "password",
|
|
||||||
bearerToken: "",
|
|
||||||
headers: [],
|
|
||||||
params: [],
|
|
||||||
bodyParams: [],
|
|
||||||
rawParams: "",
|
|
||||||
rawInput: false,
|
|
||||||
contentType: "application/json",
|
|
||||||
requestType: "JavaScript XHR",
|
|
||||||
isHidden: true,
|
isHidden: true,
|
||||||
response: {
|
response: {
|
||||||
status: "",
|
status: "",
|
||||||
@@ -744,6 +738,71 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
url: {
|
||||||
|
get() { return this.$store.state.request.url; },
|
||||||
|
set(value) { this.$store.commit('setState', { value, 'attribute': 'url' }) },
|
||||||
|
},
|
||||||
|
method: {
|
||||||
|
get() { return this.$store.state.request.method; },
|
||||||
|
set(value) { this.$store.commit('setState', { value, 'attribute': 'method' }) },
|
||||||
|
},
|
||||||
|
path: {
|
||||||
|
get() { return this.$store.state.request.path; },
|
||||||
|
set(value) { this.$store.commit('setState', { value, 'attribute': 'path' }) },
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
get() { return this.$store.state.request.label; },
|
||||||
|
set(value) { this.$store.commit('setState', { value, 'attribute': 'label' }) },
|
||||||
|
},
|
||||||
|
auth: {
|
||||||
|
get() { return this.$store.state.request.auth; },
|
||||||
|
set(value) { this.$store.commit('setState', { value, 'attribute': 'auth' }) },
|
||||||
|
},
|
||||||
|
httpUser: {
|
||||||
|
get() { return this.$store.state.request.httpUser; },
|
||||||
|
set(value) { this.$store.commit('setState', { value, 'attribute': 'httpUser' }) },
|
||||||
|
},
|
||||||
|
httpPassword: {
|
||||||
|
get() { return this.$store.state.request.httpPassword; },
|
||||||
|
set(value) { this.$store.commit('setState', { value, 'attribute': 'httpPassword' }) },
|
||||||
|
},
|
||||||
|
bearerToken: {
|
||||||
|
get() { return this.$store.state.request.bearerToken; },
|
||||||
|
set(value) { this.$store.commit('setState', { value, 'attribute': 'bearerToken' }) },
|
||||||
|
},
|
||||||
|
headers: {
|
||||||
|
get() { return this.$store.state.request.headers; },
|
||||||
|
set(value) { this.$store.commit('setState', { value, 'attribute': 'headers' }) },
|
||||||
|
},
|
||||||
|
params: {
|
||||||
|
get() { return this.$store.state.request.params; },
|
||||||
|
set(value) { this.$store.commit('setState', { value, 'attribute': 'params' }) },
|
||||||
|
},
|
||||||
|
bodyParams: {
|
||||||
|
get() { return this.$store.state.request.bodyParams; },
|
||||||
|
set(value) { this.$store.commit('setState', { value, 'attribute': 'bodyParams' }) },
|
||||||
|
},
|
||||||
|
rawParams: {
|
||||||
|
get() { return this.$store.state.request.rawParams; },
|
||||||
|
set(value) { this.$store.commit('setState', { value, 'attribute': 'rawParams' }) },
|
||||||
|
},
|
||||||
|
rawInput: {
|
||||||
|
get() { return this.$store.state.request.rawInput; },
|
||||||
|
set(value) { this.$store.commit('setState', { value, 'attribute': 'rawInput' }) },
|
||||||
|
},
|
||||||
|
requestType: {
|
||||||
|
get() { return this.$store.state.request.requestType; },
|
||||||
|
set(value) { this.$store.commit('setState', { value, 'attribute': 'requestType' }) },
|
||||||
|
},
|
||||||
|
contentType: {
|
||||||
|
get() { return this.$store.state.request.contentType; },
|
||||||
|
set(value) { this.$store.commit('setState', { value, 'attribute': 'contentType' }) },
|
||||||
|
},
|
||||||
|
passwordFieldType: {
|
||||||
|
get() { return this.$store.state.request.passwordFieldType; },
|
||||||
|
set(value) { this.$store.commit('setState', { value, 'attribute': 'passwordFieldType' }) }
|
||||||
|
},
|
||||||
|
|
||||||
selectedRequest() {
|
selectedRequest() {
|
||||||
return this.$store.state.postwoman.selectedRequest;
|
return this.$store.state.postwoman.selectedRequest;
|
||||||
},
|
},
|
||||||
@@ -877,31 +936,21 @@ export default {
|
|||||||
requestString.push(' method: "' + this.method + '",\n');
|
requestString.push(' method: "' + this.method + '",\n');
|
||||||
if (this.auth === "Basic") {
|
if (this.auth === "Basic") {
|
||||||
var basic = this.httpUser + ":" + this.httpPassword;
|
var basic = this.httpUser + ":" + this.httpPassword;
|
||||||
headers.push(
|
this.$store.commit('addHeaders', ' "Authorization": "Basic ' + window.btoa(unescape(encodeURIComponent(basic))) + ",\n")
|
||||||
' "Authorization": "Basic ' +
|
|
||||||
window.btoa(unescape(encodeURIComponent(basic))) +
|
|
||||||
",\n"
|
|
||||||
);
|
|
||||||
} else if (this.auth === "Bearer Token") {
|
} else if (this.auth === "Bearer Token") {
|
||||||
headers.push(
|
this.$store.commit('addHeaders', ' "Authorization": "Bearer Token ' + this.bearerToken + ",\n")
|
||||||
' "Authorization": "Bearer Token ' + this.bearerToken + ",\n"
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
if (["POST", "PUT", "PATCH"].includes(this.method)) {
|
if (["POST", "PUT", "PATCH"].includes(this.method)) {
|
||||||
const requestBody = this.rawInput
|
const requestBody = this.rawInput
|
||||||
? this.rawParams
|
? this.rawParams
|
||||||
: this.rawRequestBody;
|
: this.rawRequestBody;
|
||||||
requestString.push(" body: " + requestBody + ",\n");
|
requestString.push(" body: " + requestBody + ",\n");
|
||||||
headers.push(' "Content-Length": ' + requestBody.length + ",\n");
|
this.$store.commit('addHeaders', ' "Content-Length": ' + requestBody.length + ",\n")
|
||||||
headers.push(
|
this.$store.commit('addHeaders', ' "Content-Type": "' + this.contentType + '; charset=utf-8",\n')
|
||||||
' "Content-Type": "' + this.contentType + '; charset=utf-8",\n'
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
if (this.headers) {
|
if (this.headers) {
|
||||||
this.headers.forEach(function(element) {
|
this.headers.forEach(function(element) {
|
||||||
headers.push(
|
this.$store.commit('addHeaders', ' "' + element.key + '": "' + element.value + '",\n')
|
||||||
' "' + element.key + '": "' + element.value + '",\n'
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
headers = headers.join("").slice(0, -3);
|
headers = headers.join("").slice(0, -3);
|
||||||
@@ -1154,40 +1203,34 @@ export default {
|
|||||||
this.params = params;
|
this.params = params;
|
||||||
},
|
},
|
||||||
addRequestHeader() {
|
addRequestHeader() {
|
||||||
this.headers.push({
|
this.$store.commit('addHeaders', {
|
||||||
key: "",
|
key: "",
|
||||||
value: ""
|
value: ""
|
||||||
});
|
});
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
removeRequestHeader(index) {
|
removeRequestHeader(index) {
|
||||||
this.headers.splice(index, 1);
|
this.$store.commit('removeHeaders', index)
|
||||||
this.$toast.error("Deleted", {
|
this.$toast.error("Deleted", {
|
||||||
icon: "delete"
|
icon: "delete"
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
addRequestParam() {
|
addRequestParam() {
|
||||||
this.params.push({
|
this.$store.commit('addParams', { key: "", value: "" })
|
||||||
key: "",
|
|
||||||
value: ""
|
|
||||||
});
|
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
removeRequestParam(index) {
|
removeRequestParam(index) {
|
||||||
this.params.splice(index, 1);
|
this.$store.commit('removeParams', index)
|
||||||
this.$toast.error("Deleted", {
|
this.$toast.error("Deleted", {
|
||||||
icon: "delete"
|
icon: "delete"
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
addRequestBodyParam() {
|
addRequestBodyParam() {
|
||||||
this.bodyParams.push({
|
this.$store.commit('addBodyParams', { key: "", value: "" })
|
||||||
key: "",
|
|
||||||
value: ""
|
|
||||||
});
|
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
removeRequestBodyParam(index) {
|
removeRequestBodyParam(index) {
|
||||||
this.bodyParams.splice(index, 1);
|
this.$store.commit('removeBodyParams', index)
|
||||||
this.$toast.error("Deleted", {
|
this.$toast.error("Deleted", {
|
||||||
icon: "delete"
|
icon: "delete"
|
||||||
});
|
});
|
||||||
@@ -1399,10 +1442,7 @@ export default {
|
|||||||
this.path = "";
|
this.path = "";
|
||||||
this.headers = [];
|
this.headers = [];
|
||||||
for (const key of Object.keys(parsedCurl.headers)) {
|
for (const key of Object.keys(parsedCurl.headers)) {
|
||||||
this.headers.push({
|
this.$store.commit('addHeaders', { key: key, value: parsedCurl.headers[key] })
|
||||||
key: key,
|
|
||||||
value: parsedCurl.headers[key]
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
this.method = parsedCurl.method.toUpperCase();
|
this.method = parsedCurl.method.toUpperCase();
|
||||||
if (parsedCurl["data"]) {
|
if (parsedCurl["data"]) {
|
||||||
@@ -1493,6 +1533,10 @@ export default {
|
|||||||
setExclude (excludedField, excluded) {
|
setExclude (excludedField, excluded) {
|
||||||
this.urlExcludes[excludedField] = excluded;
|
this.urlExcludes[excludedField] = excluded;
|
||||||
this.setRouteQueryState();
|
this.setRouteQueryState();
|
||||||
|
},
|
||||||
|
methodChange() {
|
||||||
|
// this.$store.commit('setState', { 'value': ["POST", "PUT", "PATCH"].includes(this.method) ? 'application/json' : '', 'attribute': 'contentType' })
|
||||||
|
this.contentType = ["POST", "PUT", "PATCH"].includes(this.method) ? 'application/json' : '';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@@ -1528,4 +1572,4 @@ export default {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
@@ -1,3 +1,24 @@
|
|||||||
export default {
|
import Vuex from 'vuex';
|
||||||
|
import state from './state';
|
||||||
|
import VuexPersist from 'vuex-persist'
|
||||||
|
|
||||||
}
|
export default {
|
||||||
|
install(Vue) {
|
||||||
|
Vue.use(Vuex);
|
||||||
|
|
||||||
|
const vuexLocalStorage = new VuexPersist({
|
||||||
|
key: 'vuex',
|
||||||
|
storage: window.localStorage,
|
||||||
|
reducer: ({ ...request }) => ({
|
||||||
|
...request
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
const store = new Vuex.Store({
|
||||||
|
state,
|
||||||
|
plugins: [vuexLocalStorage.plugin]
|
||||||
|
});
|
||||||
|
|
||||||
|
Vue.prototype.$store = store;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|||||||
53
store/mutations.js
Normal file
53
store/mutations.js
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
export default {
|
||||||
|
setState(state, object){
|
||||||
|
state.request[object.attribute] = object.value
|
||||||
|
},
|
||||||
|
|
||||||
|
addHeaders(state, value) {
|
||||||
|
state.request.headers.push(value);
|
||||||
|
},
|
||||||
|
|
||||||
|
removeHeaders(state, index) {
|
||||||
|
state.request.headers.splice(index, 1)
|
||||||
|
},
|
||||||
|
|
||||||
|
setKeyHeader(state, object) {
|
||||||
|
state.request.headers[object.index].key = object.value
|
||||||
|
},
|
||||||
|
|
||||||
|
setValueHeader(state, object) {
|
||||||
|
state.request.headers[object.index].value = object.value
|
||||||
|
},
|
||||||
|
|
||||||
|
addParams(state, value) {
|
||||||
|
state.request.params.push(value);
|
||||||
|
},
|
||||||
|
|
||||||
|
removeParams(state, index) {
|
||||||
|
state.request.params.splice(index, 1)
|
||||||
|
},
|
||||||
|
|
||||||
|
setKeyParams(state, object) {
|
||||||
|
state.request.params[object.index].key = object.value
|
||||||
|
},
|
||||||
|
|
||||||
|
setValueParams(state, object) {
|
||||||
|
state.request.params[object.index].value = object.value
|
||||||
|
},
|
||||||
|
|
||||||
|
addBodyParams(state, value) {
|
||||||
|
state.request.bodyParams.push(value);
|
||||||
|
},
|
||||||
|
|
||||||
|
removeBodyParams(state, index) {
|
||||||
|
state.request.bodyParams.splice(index, 1)
|
||||||
|
},
|
||||||
|
|
||||||
|
setKeyBodyParams(state, object) {
|
||||||
|
state.request.bodyParams[object.index].key = object.value
|
||||||
|
},
|
||||||
|
|
||||||
|
setValueBodyParams(state, object) {
|
||||||
|
state.request.bodyParams[object.index].value = object.value
|
||||||
|
},
|
||||||
|
};
|
||||||
19
store/state.js
Normal file
19
store/state.js
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
export default {
|
||||||
|
request: {
|
||||||
|
method: 'GET',
|
||||||
|
url: 'https://reqres.in',
|
||||||
|
path: '/api/users',
|
||||||
|
label: '',
|
||||||
|
auth: 'None',
|
||||||
|
httpUser: '',
|
||||||
|
httpPassword: '',
|
||||||
|
bearerToken: '',
|
||||||
|
headers: [],
|
||||||
|
params: [],
|
||||||
|
bodyParams: [],
|
||||||
|
rawParams: '',
|
||||||
|
rawInput: false,
|
||||||
|
requestType: '',
|
||||||
|
contentType: '',
|
||||||
|
}
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user