widlam/dev/implement_rest_mock #231
@@ -18,6 +18,11 @@ server {
|
|||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
location /api/mock {
|
||||||
|
proxy_pass http://xmltools-mocked-services:8097/api/mock;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
}
|
||||||
|
|
||||||
location /libxml/ {
|
location /libxml/ {
|
||||||
proxy_pass http://xmltools-libxml-backend/;
|
proxy_pass http://xmltools-libxml-backend/;
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
|
|||||||
15
Frontend/src/components/mock/BodyDetailComponent.vue
Normal file
15
Frontend/src/components/mock/BodyDetailComponent.vue
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
|
||||||
|
const props = defineProps(
|
||||||
|
{
|
||||||
|
data: {required: true, type: String}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<span class="text-white text-center h-screen">
|
||||||
|
{{ props.data.replace(/\\n/g,"") }}
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
20
Frontend/src/components/mock/HeadersDetailComponent.vue
Normal file
20
Frontend/src/components/mock/HeadersDetailComponent.vue
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
|
||||||
|
const props = defineProps(
|
||||||
|
{
|
||||||
|
data: {type:String, required:true}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<table class="w-full text-center text-white mt-2">
|
||||||
|
<tr> <th>Name</th> <th>Value</th> </tr>
|
||||||
|
<tr v-for="(value,name) in JSON.parse(data)" :key="name">
|
||||||
|
<td>{{ name }}</td>
|
||||||
|
<td>{{ value }}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</template>
|
||||||
@@ -1,8 +1,40 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { ref } from 'vue';
|
||||||
import HistoryRecords from './HistoryRecords.vue';
|
import HistoryRecords from './HistoryRecords.vue';
|
||||||
|
import BodyDetailComponent from './BodyDetailComponent.vue';
|
||||||
|
import HeadersDetailComponent from './HeadersDetailComponent.vue';
|
||||||
|
|
||||||
|
const shownDetail = ref('none');
|
||||||
|
const currentShownData = ref('');
|
||||||
|
const currentIndex = ref(-1);
|
||||||
|
|
||||||
|
function showBody(body : string, index: number){
|
||||||
|
if( currentIndex.value == index && shownDetail.value == "body" ){
|
||||||
|
shownDetail.value = "none";
|
||||||
|
} else {
|
||||||
|
currentIndex.value = index;
|
||||||
|
shownDetail.value = "body";
|
||||||
|
currentShownData.value = body;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function showHeaders(headers: object, index: number){
|
||||||
|
if(currentIndex.value == index && shownDetail.value == "headers" ){
|
||||||
|
shownDetail.value = "none";
|
||||||
|
} else {
|
||||||
|
currentIndex.value = index;
|
||||||
|
shownDetail.value = "headers";
|
||||||
|
currentShownData.value = JSON.stringify(headers);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<HistoryRecords></HistoryRecords>
|
<div class="w-full xl:w-5/12 flex flex-col gap-y-4">
|
||||||
|
<HistoryRecords @click:show-headers="showHeaders" @click:show-body="showBody"></HistoryRecords>
|
||||||
|
<BodyDetailComponent :data="currentShownData" v-if="shownDetail == 'body' "></BodyDetailComponent>
|
||||||
|
<HeadersDetailComponent :data="currentShownData" v-if="shownDetail == 'headers' "></HeadersDetailComponent>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { h, ref, type Ref } from 'vue';
|
import {ref, type Ref } from 'vue';
|
||||||
|
|
||||||
interface historyRecord {
|
interface historyRecord {
|
||||||
clientUUID : String,
|
clientUUID : String,
|
||||||
@@ -24,32 +24,37 @@ function parseTimeStamp(timestamp : String){
|
|||||||
return timestamp.substring(10,19).replace("T"," ");
|
return timestamp.substring(10,19).replace("T"," ");
|
||||||
}
|
}
|
||||||
|
|
||||||
function showHeaders(headers: object){
|
function showHeaders(headers: Object, index : number){
|
||||||
emit('click:showHeaders',headers)
|
emit('click:showHeaders',headers, index)
|
||||||
}
|
}
|
||||||
|
|
||||||
function showBody(body: String){
|
function showBody(body: String , index : number){
|
||||||
console.log(body)
|
console.log(body)
|
||||||
emit('click:showBody',body)
|
emit('click:showBody',body, index)
|
||||||
|
}
|
||||||
|
|
||||||
|
function refreshHistory(){
|
||||||
|
fetch(fetchLink+"/"+clientUUID).then(response => response.json()).then(data => { historyRecords.value = data });
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="w-full xl:w-5/12">
|
<div>
|
||||||
<table class="text-white h-28 w-full text-center">
|
<table class="text-white h-28 w-full text-center">
|
||||||
<tr>
|
<tr>
|
||||||
<th>Time</th>
|
<th>Time</th>
|
||||||
<th>HTTP Method</th>
|
<th>HTTP Method</th>
|
||||||
<th>HTTP Headers</th>
|
<th>HTTP Headers</th>
|
||||||
<th>Request Body</th>
|
<th>Request Body</th>
|
||||||
|
<th class="text-2xl"><button @click="refreshHistory()">⟳</button></th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr v-for="(item , index) in historyRecords" :key="index">
|
<tr v-for="(item , index) in historyRecords" :key="index">
|
||||||
<td> {{ parseTimeStamp(item.dateTimeStamp) }} </td>
|
<td> {{ parseTimeStamp(item.dateTimeStamp) }} </td>
|
||||||
<td> {{ item.httpMethod }} </td>
|
<td> {{ item.httpMethod }} </td>
|
||||||
<td> <button @click="showHeaders(item.headers)">Show Headers</button> </td>
|
<td> <button @click="showHeaders(item.headers, index)">Show Headers</button> </td>
|
||||||
<td>
|
<td>
|
||||||
<button v-if="item.requestBody.length != 0" @click="showBody(item.requestBody)">Show Headers</button>
|
<button v-if="item.requestBody.length != 0" @click="showBody(item.requestBody, index)">Show Body</button>
|
||||||
<span v-else>Empty Body</span>
|
<span v-else>Empty Body</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
Reference in New Issue
Block a user