aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTerry Truong <terry06890@gmail.com>2022-07-08 02:16:42 +1000
committerTerry Truong <terry06890@gmail.com>2022-07-08 02:23:23 +1000
commit2508c7cf38ed412bdffffd74b31d003651571187 (patch)
treeab27930fc6fc9542710e1391332c3e1c2d6d7737
parentef4a9b9223d6019f0b782eb2f944f3cfe2b6ed41 (diff)
Add basic conversion to POST requeststest-post-reqs
Using fetch() sent a CORS preflight request, which python's basic server couldn't understand. Using fetch()'s 'no-cors' option seems to just fail. Ended up using Vite's proxy functionality again. CGI script also got unexpected empty command line argument.
-rwxr-xr-xbackend/cgi-bin/data.py13
-rw-r--r--src/lib.ts13
-rw-r--r--vite.config.js3
3 files changed, 22 insertions, 7 deletions
diff --git a/backend/cgi-bin/data.py b/backend/cgi-bin/data.py
index 3579a18..3376972 100755
--- a/backend/cgi-bin/data.py
+++ b/backend/cgi-bin/data.py
@@ -29,9 +29,10 @@ Query parameters:
weakly-trimmed, images-only, and picked-nodes trees. The default
is 'images'.
"""
-if len(sys.argv) > 1:
- print(usageInfo, file=sys.stderr)
- sys.exit(1)
+#if len(sys.argv) > 1:
+# print(sys.argv, file=sys.stderr)
+# print(usageInfo, file=sys.stderr)
+# sys.exit(1)
# Classes for objects sent as responses (matches lib.ts types in client-side code)
class TolNode:
@@ -236,8 +237,12 @@ def respondJson(val):
sys.stdout.flush()
sys.stdout.buffer.write(content)
def handleReq(dbCur):
+ content_len = int(os.environ["CONTENT_LENGTH"])
+ data = sys.stdin.read(content_len)
+ queryStr = jsonpickle.decode(data)["params"]
+ print(queryStr, file=sys.stderr)
# Get query params
- queryStr = os.environ["QUERY_STRING"] if "QUERY_STRING" in os.environ else ""
+ #queryStr = os.environ["QUERY_STRING"] if "QUERY_STRING" in os.environ else ""
queryDict = urllib.parse.parse_qs(queryStr)
# Set vars from params
name = queryDict["name"][0] if "name" in queryDict else None
diff --git a/src/lib.ts b/src/lib.ts
index faec861..8aaeb47 100644
--- a/src/lib.ts
+++ b/src/lib.ts
@@ -7,15 +7,22 @@ import {LayoutOptions} from './layout';
import {getBreakpoint, Breakpoint, getScrollBarWidth, onTouchDevice} from './util';
// For server requests
-const SERVER_URL = 'http://localhost:8000/cgi-bin/data.py'
+const SERVER_URL = 'http://localhost:3000/cgi-bin/data.py'
export async function queryServer(params: URLSearchParams){
// Construct URL
let url = new URL(SERVER_URL);
- url.search = params.toString();
+ //url.search = params.toString();
// Query server
let responseObj;
try {
- let response = await fetch(url.toString());
+ let response = await fetch(url.toString(), {
+ method: 'POST',
+ headers: {
+ 'Content-type': 'application/json',
+ },
+ body: JSON.stringify({params: params.toString()}),
+ });
+ console.log(response)
responseObj = await response.json();
} catch (error){
console.log(`Error with querying ${url}: ${error}`);
diff --git a/vite.config.js b/vite.config.js
index f1e7552..ebcdcd3 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -5,6 +5,9 @@ export default defineConfig({
base: '/',
plugins: [vue()],
server: {
+ proxy: {
+ '/cgi-bin/data.py': 'http://localhost:8000'
+ },
watch: {
ignored: ['**/backend', '**/public']
},